【发布时间】:2019-10-02 01:15:28
【问题描述】:
我知道我的 python 版本使用 64 位表示,所以应该有一些公式来计算哪些浮点数可以精确表示。
>>> 3.00000000000000022203 == 3.0
True
>>> 3.00000000000000022205 == 3.0
False
当精度级别无法准确表示时,我该如何正确捕捉?
如果目标是检查某些东西是否可以表示为 Python 浮点数(而不是简单地以任意精度精确表示 二进制浮点数),然后检查分母是幂 两个是不够的:你还需要检查分子是 适当有界。 (并且避免了下溢和溢出。)对于 一个简单的反例,考虑案例 10**23 - Mark Dickinson 来自How to determine if a decimal fraction can be represented exactly as Python float?
那篇文章只讨论了如何处理小数,也没有讨论过大的数字。
【问题讨论】:
标签: python python-3.x overflow underflow