我是一个广泛使用 MATLAB 的 Python 新手。我正在转换一些log2
在 MATLAB 中使用的代码,我使用了 NumPylog2
函数,得到的结果与我对这么小的数字的预期不同。我很惊讶,因为数字的精度应该是相同的(即 MATLAB double 与 NumPy float64)。
MATLAB 代码
a = log2(64);
--> a=6
基本 Python 代码
import math
a = math.log2(64)
--> a = 6.0
NumPy 代码
import numpy as np
a = np.log2(64)
--> a = 5.9999999999999991
修改后的 NumPy 代码
import numpy as np
a = np.log(64) / np.log(2)
--> a = 6.0
因此,本机 NumPylog2
函数给出的结果导致代码无法通过测试,因为它正在检查一个数字是否为 2 的幂。预期结果正好是 6,本机 Pythonlog2
函数和修改后的 NumPy 代码都使用对数的性质。log2
我对 NumPy函数做错了吗?我现在将代码更改为使用本机 Python log2
,但我只是想知道答案。