Python中可以表示的最小数是什么?

16

Python中可以表示的最小数字是什么?

我见过的最小数是2.05623357236e-296,但还有更小的吗?

2个回答

22

查看sys.float_info

>>> import sys
>>> 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)

来自文档

从文档中
min       DBL_MIN      minimum positive normalized float 
min_exp   DBL_MIN_EXP  minimum integer e such that radix**(e-1) is a normalized float
在我的系统中,它被标记为min=2.2250738585072014e-308

9

请检查 sys.float_info.min。注意这是最小的规范化值;最小的非规范化值可能更小,但数值精度会降低。

通常使用64位浮点数,规范化的最小值约为2.2e-308。非规范化的最小值可以更小,低至4.94e-324:

>>> 5e-324
4.9406564584124654e-324

值得一提的是,decimal 模块中的 Decimal 类型可以表示任意小的数字,仅受可用内存限制。


1
在这个上下文中,“规范化”和“非规范化”是什么意思? - poppyseeds
3
这是有关数字的浮点表示中的技术区别。维基百科有一个很好的概述:https://en.m.wikipedia.org/wiki/Denormal_number - nneonneo
@nneonneo,我有一个小建议。您能否将维基链接添加到您的帖子中。评论可能会被删除,链接也可能会丢失。谢谢。 - Bhargav Rao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接