我知道我的python版本使用64位表示形式,因此应该有一些公式来计算哪些浮点数可以精确表示。
>>> 3.00000000000000022203 == 3.0
True
>>> 3.00000000000000022205 == 3.0
False
当无法精确表示精度时,我该如何正确捕捉?
如果目的是检查某些东西可以用Python表示 浮动(而不是简单地以任意精度精确表示) 二进制浮点数),然后检查分母是否是幂 仅两个是不够的:您还需要检查分子是否为 适当限制。 (并且避免了下溢和溢出。) 一个简单的反例,请考虑10 ** 23-How to determine if a decimal fraction can be represented exactly as Python float?
的Mark Dickinson
那篇文章只讨论了如何处理小数,但也没有讨论非常大的数字。
答案 0 :(得分:0)
您可以计算出您的float文字是否可以正确表示,但是会引发异常怎么办?如果使用浮点数,那是因为您需要该浮点数。也许我不明白您要做什么。
如果需要,可以使用Decimal来更准确地存储十进制文字。