Python 2.6 与 2.7 中的浮点行为

2023-12-08

所以我打开了 Python 2.6 解释器,得到了这个:

Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 2.1
2.1000000000000001
>>> 2.2
2.2000000000000002
>>> 2.2
2.2000000000000002

然而,在 Python 2.7 中,我得到了更多类似人类的结果,如下所示:

Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 5.4
5.4
>>> 1.1
1.1
>>> 0.2
0.2
>>> 

我想问为什么会发生这种情况,我怎样才能让 Python 2.6 表现得像 2.7 一样?


The float.__repr__() and float.__str__()Python 2.7 中的方法发生了变化; Python 3.1 浮点到字符串的转换方法已向后移植,并且值现在已四舍五入。

C 源代码float.__str__()使用以下格式格式化浮点值g格式化程序代码sprintf()函数,精度为 12 位。

要在 Python 2.6 中获得相同的结果,您必须自己格式化字符串:

'%.12g' % fp_value

或使用format()功能:

format(fp_value, '.12g')

请注意,在 Python 2.7 中仅表示改变了,而不是实际值。浮点值仍然是实数的二进制近似值,并且二进制分数并不总是加起来等于exact代表的数字。

如果您需要比什么更精确float近似值为您提供,您需要切换到使用decimal.Decimal() type反而。这保持了精度,但以速度为代价(浮点运算是在现代计算机的硬件中处理的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 2.6 与 2.7 中的浮点行为 的相关文章

随机推荐

  • 在 C 函数调用之前在内联汇编中推送额外的参数是否以任何方式(跨编译器、平台、libc 实现等)安全或可移植?

    我写了一个函数来漂亮地打印数独 当然这个模式可以通过一些循环生成 但我不想经历麻烦 所以这就是我想出的 前 5 个格式说明符只是 printf 的参数 本身被推入堆栈 并且在回车后将被覆盖 虽然 它可以在我的机器上运行 但我想知道这是否可以
  • 如何在不同的Qt线程中调用GUI元素?

    我有一个应用程序 其中线程 不是主线程 需要访问 GUI 的元素 发送单击操作 显示消息框等 我正在 python 和 Qt 中工作 也知道在非主线程中这是不可能的 有办法做到吗 我的意思是将我想要在线程中执行的操作发送到主线程 这是一个关
  • 如何在 Prolog 解释器中使用差异列表

    当我写下的时候这个问题在一个空列表上作为差异列表我想测试一下我对这些结构的了解 然而 当我尝试像比较不同符号这样简单的事情时 我似乎错了 而且我做了not了解差异列表的实际情况 L a b c d e d e L a b c false e
  • 为文本中的每个单词创建图像的建议

    我正在寻找一种方法来自动为文本文件中的每个单词创建图像渲染 我正在研究一种 简单 的方法来在不支持复杂脚本的计算机和手机上显示复杂的脚本 有没有一种简单的方法可以做这样的事情 文本将为高棉语 UTF 8 我已经尝试过 imagettftex
  • savefig 错误

    我计算机上的 Python 所有部分最近都是从 Enthought 学术包安装的 但使用 Pyscripter 来编辑和运行代码 我还处于学习曲线的早期阶段 因此很可能会忽略这里的一些明显的事情 当我尝试创建一个绘图并像这样保存它时 imp
  • 父模块中的程序集插件可以使用“moduleSets”聚合 pom 子级的二进制工件吗?

    在多模块项目中 parent child1 packaging pom can parent生成的聚合工件child1 经过两天多的测试和阅读文档后 我不确定这是否是由于设计 错误或我自己没有发现明显的原因而不可能实现的 Using mvn
  • 编译错误“类文件版本错误 52.0,应该是 50.0”

    我正在尝试编译我的项目智能IDEA 我正在外部 JAR 文件中使用一个类 并且在编译时收到以下错误 Class file has wrong version 52 0 should be 50 0 据我所知 它是说 JAR 文件是用比 In
  • Textmate 代码完成问题

    我知道 ESC 键可以完成代码 但是有没有办法获得一个弹出窗口 我猜是工具提示 来显示一段代码的所有可能选择 举个例子 在编写 Javascript 时获取可用操作的列表会很好 我使用过的其他应用程序 例如 Coda 可以执行此操作 我想看
  • 为 gmail imap 生成有效的 oauth 令牌和秘密?

    我一直在到处寻找 Java 端口xoauth py 因为我真的想在我的 java web 应用程序中使用相同的身份验证过程 我尝试使用 GoogleOAuthHelper 生成令牌和秘密 但是当我将它们插入到谷歌邮件java示例 我收到错误
  • 将 Numpy 数组列表转换为单个 Numpy 数组,无需复制数据

    我正在使用 Python OpenCV 读取视频数据 并希望存储 K 个帧 目前 我有执行以下操作的循环 伪代码 frame list 1 K frame buffer list map ReadFrameNumber frame list
  • 如何让 Laravel whereIn 不自动排序

    我的数组来自 temp is Array 0 gt 22 1 gt 26 2 gt 20 3 gt 24 or 22 26 20 24 当我使用whereIn像这样 robjeks DB table objek gt whereIn id
  • React Admin:如何传递状态进行转换

    我有一个用于创建媒体的组件 它首先将媒体上传到 S3 然后将返回的值放入组件的状态中 import Create ReferenceInput SelectInput SimpleForm TextInput from react admi
  • 使用触发器插入后更新另一个表?

    我目前正在创建某种库存系统 I have tbl1我在哪里保存项目 在tbl1 我有专栏qty或剩余可用库存 tbl1 id product qty 1 mouse 10 2 keyboard 15 3 monitor 8 我也有桌子tbl
  • T-SQL 多重分组

    我有以下数据 Product Price StartDate EndDate Apples 4 9 2010 03 01 00 00 00 000 2010 03 01 00 00 00 000 Apples 4 9 2010 03 02
  • 如何在SQL*Plus中获取Oracle建表语句

    我有一个表存在于 Oracle 数据库中 但没有显示在 SQL Developer 工具的表列表中 但是 如果我转到 SQL Plus 并执行 select table name from user tables 我列出了表格 如果我输入
  • 如何让Oracle过程返回结果集

    SQL Server 过程可以返回结果集 我有一张桌子emp emp id emp name 以下过程将返回与所提供的姓名匹配的员工列表 CREATE OR REPLACE PROCEDURE get employee by name na
  • laravel 4:URL::route 与 jquery

    作为新的 laravel 用户 我试图通过 laravel URL class 构建 ajax 调用 url ajax url URL route getUser 3 success function results alert resul
  • CMAKE 中添加 -fPIC 编译器选项的惯用方法是什么?

    我至少遇到过 3 种方法来做到这一点 我想知道哪种方法是惯用的 这几乎需要对任何静态库普遍完成 我很惊讶 CMake 中的 Makefile 生成器不会自动将其添加到静态库中 除非我错过了什么 target compile options
  • IValueConverter 的异步实现

    我有一个异步方法 我想在一个内部触发IValueConverter 有没有比通过调用强制同步更好的方法Result财产 public async Task Convert object value Type targetType objec
  • Python 2.6 与 2.7 中的浮点行为

    所以我打开了 Python 2 6 解释器 得到了这个 Python 2 6 6 r266 84292 Nov 22 2013 12 16 22 GCC 4 4 7 20120313 Red Hat 4 4 7 4 on linux2 Ty