Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算为浮点数存储的二进制近似值的真正十进制值_Python - Fatal编程技术网

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

Python 如何计算为浮点数存储的二进制近似值的真正十进制值,python,Python,上面说,我正在调查 如果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):

上面说,我正在调查

如果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
target=0.1
tem=0.0
对于范围(-1,-307,-1)内的i:
如果(2**i<目标):
如果(tem+2**i<目标):
tem+=2**i
印刷品(一)
其他:
打破
这个代码块只是为了演示我想要得到什么


我在里面搜索,发现人们只是引用了文档而没有提供实现。

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


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

print({.53f})。format(target))
BTW,计算机是以二进制方式工作的,因此从某种意义上说,二进制值是浮点值的真值,十进制表示是近似值@下午。由于二进制分数在十进制中总是不重复的,OP要求的是存储在二进制中的真实值
a = ('{:.53f}'.format(target))