在什么深度之前Python会将数字视为零?
简单来说,我正在用networkx创建一个图,节点之间的连接越轻(权重越小)就越好。
我遇到的问题是,pagerank不喜欢权重为零的情况,会报错。所以我在想,Python中有没有一个几乎是零但又不完全是零的数字?比如0.0000000000001?
或者如果我的方法真的很糟糕(我怀疑可能是这样),有没有其他办法可以解决这个问题?因为pagerank是通过递归的方式计算得分,然后再对整个数据集进行归一化处理,所以随着数据集变大,得分往往会非常低(想象一下有十亿个节点的情况)。
2 个回答
6
>>> 1e-324
0.0
>>> 1e-323
9.8813129168249309e-324
>>> 1e-307 < sys.float_info.min
False
>>> 1e-307 > sys.float_info.min
True
>>> 1e-323 < sys.float_info.min
True
>>> 1e-323 + 1e-323
1.9762625833649862e-323
>>> 1e-324 + 1e-324
0.0
>>> 0.0 < 1e-323 < sys.float_info.min
True
一些有趣的测试
针对@Kari的评论的更新
我很好奇为什么这个是真的
3
你可以查看 sys.float_info.min
,这是最小的正标准浮点数的值。在我的系统上,这个值是 2.2250738585072014e-308
。