计算最接近的数字numpy
Calculating closest numbers numpy
我正在尝试计算最接近 0 的数字,但到目前为止无法得到我想要的结果。
我有一个很简单的代码;
y = 0.0
x = 0.1
while (y + x > y):
x = x/2.0
x*2
但我一直得到 0.0 作为输出。我该如何解决这个问题
您可以简单地使用 np.nextafter
:
>>> np.nextafter(0, 1)
4.9406564584124654e-324
也许您只是在搜索最小浮点数:
import sys
print(sys.float_info.min)
我猜你想继续除法直到 x 变得非常小以至于变为零(以浮点格式)。在循环的最后一次迭代中,x 最终变为零,循环条件变为假:
0.0(y) + 0.0(x) > 0.0(y)
。在最后一行,您尝试通过乘以 2 来检索 x-value。但 x 已经为零,所以结果也为零。从数学上讲是完全有道理的,但此时浮点值已经为零。
为了保持最新的 non-zero 值使用第二个变量:
y = 0.0
x = 0.1
smallest_x = x
while (y + x > y):
smallest_x = x
x = x/2.0
x*2
或者您可以预先检查 x 是否在再次除法后变为零:
y = 0.0
x = 0.1
while (y + x/2.0 > y): //checking if the next division makes x to zero
x = x/2.0
x*2
或者采用不同的方法来获得最小的 x:
x = 1.0
while (x/2.0 != 0):
x = x/2.0
我正在尝试计算最接近 0 的数字,但到目前为止无法得到我想要的结果。
我有一个很简单的代码;
y = 0.0
x = 0.1
while (y + x > y):
x = x/2.0
x*2
但我一直得到 0.0 作为输出。我该如何解决这个问题
您可以简单地使用 np.nextafter
:
>>> np.nextafter(0, 1)
4.9406564584124654e-324
也许您只是在搜索最小浮点数:
import sys
print(sys.float_info.min)
我猜你想继续除法直到 x 变得非常小以至于变为零(以浮点格式)。在循环的最后一次迭代中,x 最终变为零,循环条件变为假:
0.0(y) + 0.0(x) > 0.0(y)
。在最后一行,您尝试通过乘以 2 来检索 x-value。但 x 已经为零,所以结果也为零。从数学上讲是完全有道理的,但此时浮点值已经为零。
为了保持最新的 non-zero 值使用第二个变量:
y = 0.0
x = 0.1
smallest_x = x
while (y + x > y):
smallest_x = x
x = x/2.0
x*2
或者您可以预先检查 x 是否在再次除法后变为零:
y = 0.0
x = 0.1
while (y + x/2.0 > y): //checking if the next division makes x to zero
x = x/2.0
x*2
或者采用不同的方法来获得最小的 x:
x = 1.0
while (x/2.0 != 0):
x = x/2.0