相关疑难解决方法(0)

是什么导致Python的float_repr_style使用旧版?

在几乎每个系统上,Python都可以为您提供人类可读的浮点的简短表示形式,而不是17位的机器精度:

Python 3.3.0 (default, Dec 20 2014, 13:28:01) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 0.1
0.1
>>> import sys; sys.float_repr_style
'short'
Run Code Online (Sandbox Code Playgroud)

ARM926EJ-S上,您没有简短的表示形式:

Python 3.3.0 (default, Jun  3 2014, 12:11:19) 
[GCC 4.7.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 0.1
0.10000000000000001
>>> import sys; sys.float_repr_style
'legacy'
Run Code Online (Sandbox Code Playgroud)

对于大多数系统Python 2.7显然将此简短表示形式添加到repr():

现在,在大多数平台上都可以正确舍入浮点数和字符串之间的转换。这些转换发生在许多不同的地方:str()代表浮点数和复数;浮动和复杂构造函数;数字格式;使用marshal,pickle和json模块对浮点数和复数进行序列化和反序列化;在Python代码中解析float和虚数文字;和十进制到浮点转换。

与此相关的是,浮点数x的repr()现在基于最短的十进制字符串返回一个结果,该字符串保证在正确的舍入(使用“从一半到一半到四舍五入的舍入模式”下)可以四舍五入为x。以前,它根据x舍入到17个十进制数字给出了一个字符串。

负责此改进的舍入库可在Windows和使用gcc,icc或suncc编译器的Unix平台上工作。可能在少数平台上无法保证此代码的正确操作,因此在此类系统上不使用该代码。您可以通过检查sys.float_repr_style来确定正在使用的代码,如果正在使用新代码,则将简短显示,而如果未使用,则将使用旧代码。

由Eric Smith和Mark Dickinson使用David Gay的dtoa.c库实现;问题7117

他们说某些平台不能保证( dtoa.c …

python floating-point

5
推荐指数
1
解决办法
313
查看次数

标签 统计

floating-point ×1

python ×1