概述
数字比较相等,因为58682.7578125可以在32位和64位浮点中精确表示.让我们仔细看看二进制表示:
32 bit: 01000111011001010011101011000010
sign : 0
exponent: 10001110
fraction: 11001010011101011000010
64 bit: 0100000011101100101001110101100001000000000000000000000000000000
sign : 0
exponent: 10000001110
fraction: 1100101001110101100001000000000000000000000000000000
它们具有相同的符号,相同的指数和相同的分数 – 64位表示中的额外位用零填充.
无论他们演出哪种方式,他们都会比较平等.如果您尝试使用其他数字,例如58682.7578124,您会看到二进制级别的表示形式不同; 32位失去更高的精度,他们不会比较相等.
(在二进制表示中也很容易看到float32可以向上传播到float64而不会丢失任何信息.这就是numpy在比较两者之前应该做的事情.)
import numpy as np
a = 58682.7578125
f32 = np.float32(a)
f64 = np.float64(a)
u32 = np.array(a, dtype=np.float32).view(dtype=np.uint32)
u64 = np.array(a, dtype=np.float64).view(dtype=np.uint64)
b32 = bin(u32)[2:]
b32 = '
最后
以上就是阔达星星为你收集整理的python中float32_python – Numpy的float32和float比较的全部内容,希望文章能够帮你解决python中float32_python – Numpy的float32和float比较所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复