【发布时间】:2016-07-20 09:51:30
【问题描述】:
我需要找到一个尽可能接近零的numpy.float64 值。
Numpy 提供了几个允许做类似事情的常量:
np.finfo(np.float64).eps = 2.2204460492503131e-16np.finfo(np.float64).tiny = 2.2250738585072014e-308
这些都相当小,但是当我这样做时
>>> x = np.finfo(np.float64).tiny
>>> x / 2
6.9533558078350043e-310
结果更小。使用即兴二进制搜索时,我可以降低到大约1e-323,然后将值向下舍入到0.0。
在我缺少的 numpy 中是否有一个常量?或者,有没有正确的方法可以做到这一点?
【问题讨论】:
-
使用 np.nextafter。几乎重复:stackoverflow.com/questions/6063755/…
-
谢谢,这正是我所需要的。如果您将其写为答案,我将很乐意接受。我同意您链接的问题的主题是相似的,但我从没想过寻找与我的问题相关的关键字。
-
请问您为什么需要这个?只是为了确保你没有被 XY 问题困住:)
-
主要是出于好奇。一位同事问我是否知道该怎么做,我想不出比“让我们在 SO 上问这个”更好的答案。不过我不知道他的具体应用。
-
仅供参考:0 到
np.finfo(np.float64).tiny之间的浮点值被称为“非正规”或“次正规”数字:en.wikipedia.org/wiki/Denormal_number