Gök*_*ver 1 python string floating-point
我有一个简单的字符串,我想在不丢失任何可见信息的情况下读入浮点数,如下图所示:
s = ' 1.0000\n'
Run Code Online (Sandbox Code Playgroud)
当我这样做时f = float(s),我明白了f=1.0
如何欺骗这个f=1.0000?
谢谢
直接回答:你做不到.根据设计,浮子是不精确的.虽然python的浮点数具有足够的精度来表示1.0000,但它们永远不会代表"1点零 - 零 - 零".机会是,这是你所需要的.如果需要显示四位十进制数字,则始终可以使用字符串格式.
print '%.3f' % float(1.0000)
Run Code Online (Sandbox Code Playgroud)
间接答案:使用decimal模块.
from decimal import Decimal
d = Decimal('1.0000')
Run Code Online (Sandbox Code Playgroud)
该decimal软件包旨在以任意精度处理所有这些问题.十进制"1.0000" 正好是 1.0000,不多也不少.但请注意,舍入的复杂性意味着您无法从float直接转换为Decimal; 你必须将一个字符串(或一个整数)传递给构造函数.
>>> 1.0 == 1.00 == 1.000
True
Run Code Online (Sandbox Code Playgroud)
换句话说,你没有丢失任何信息 - Python认为浮点数小数部分中的尾随零是无关紧要的.如果你需要非常具体地跟踪"有效数字的数量",这也是可行的,但你需要向我们解释除了Python正常之外你想要完成的事情float(例如,decimal在Python标准库中)与它有什么关系?等等......).