这不是此问题的重复,我会在这里解释。
考虑 x = 1.2
。我想将其分离为1
和0.2
。我尝试了链接问题中概述的所有方法:
In [370]: x = 1.2
In [371]: divmod(x, 1)
Out[371]: (1.0, 0.19999999999999996)
In [372]: math.modf(x)
Out[372]: (0.19999999999999996, 1.0)
In [373]: x - int(x)
Out[373]: 0.19999999999999996
In [374]: x - int(str(x).split('.')[0])
Out[374]: 0.19999999999999996
无论我尝试什么方法,都无法得到确切的 1
和 0.2
。
有没有一种可靠的方法将浮点数转换为其十进制和浮点等效值,而不受浮点表示限制的影响?
我理解这可能是由于数字本身存储方式的限制,因此我愿意接受任何建议(例如程序包或其他方式),以克服这一问题。
编辑:如果可能,最好不要涉及字符串操作。
1.2
无法被正确地表示。它只是以1.2
的形式进行格式化。实际上,这个数字是1.19999...
。 - Willem Van Onsem0.2
在这种格式下无法准确表示。 - Willem Van Onsem