首页 > 解决方案 > 如何计算为浮点数存储的二进制近似值的真实十进制值

问题描述

我正在研究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 内部进行了搜索,发现人们只是引用了文档而没有提供实现。

标签: python

解决方案


从我自己的谷歌搜索中偶然发现了这一点,并在其他地方找到了解决方案(@PM 2RING 在这里提到)。

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

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


推荐阅读