如何计算为浮点数存储的二进制近似值的真实十进制值

时间:2018-08-19 04:04:46

标签: python

我正在调查python doc,它说

如果Python要打印存储为0.1的二进制近似值的真实十进制值,则必须显示

>>> 0.1
0.1000000000000000055511151231257827021181583404541015625

我的问题是,是否可以使用现有的API来获取长字符串值?

还是我必须手动操作?喜欢

target = 0.1
tem = 0.0
for i in range(-1, -307, -1):
    if (2 ** i < target):
        if (tem + 2 ** i < target):
            tem += 2 ** i
            print(i)
        else:
            break

此代码块仅用于演示我想要得到的内容。

我在SO内进行搜索,发现人们只是引用了该文档而没有提供实现。

1 个答案:

答案 0 :(得分:1)

在我自己的Google搜索中偶然发现了这个问题,并在其他地方找到了解决方案(并在此@PM 2RING提到过)。

a = ('{:.53f}'.format(target))

format选项允许您强制变量明确包含53个小数点,然后将其存储为字符串。