C_Z*_*_Z_ 3 python floating-point
我试图确定与零相比时python浮点数的精确程度.请注意以下事项:
1e-323 == 0
> False
1e-324 == 0
> True
Run Code Online (Sandbox Code Playgroud)
我出现的阈值是324小数点,至少与我正在运行的实现(python 2.7,CPython).这记录在哪里?它是依赖于实现的吗?
它是特定于实现的:
numbers.Real(float)
这些代表机器级双精度浮点数.您可以接受底层机器架构(以及C或Java实现),以获得可接受的范围和溢出处理.Python不支持单精度浮点数; 处理器和内存使用的节省通常是使用它们的原因,这与使用Python中的对象的开销相形见绌,因此没有理由使用两种浮点数复杂化语言.
但是,您可以在运行时查询此信息:
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
Run Code Online (Sandbox Code Playgroud)