Numpy float32的意外舍入行为

vsdwdz23  于 2022-11-29  发布在  其他
关注(0)|答案(2)|浏览(126)

我试图理解numpy如何处理float32数据类型。
下面的代码生成0.25815687

print(np.float32(0.2581568658351898).astype(str)) # 0.25815687

但是一个在线的浮点数转换器https://www.h-schmidt.net/FloatConverter/IEEE754.html给出0.2581568658351898193359375,Numpy在打印单精度浮点数时做了什么特别的事情吗?还是我遗漏了什么?Online converter result

e4eetjau

e4eetjau1#

可以使用f字符串强制打印位数

print(f"{np.float32(0.2581568658351898):.25f}")

其中:.25f告诉解释器将值打印为25位十进制数的浮点数。

bihw5rsg

bihw5rsg2#

Numpy在打印单精度浮点数时是否做了一些特殊的事情,或者我遗漏了一些事情?
0.2581568658351898不能完全编码为32位浮点数。
最接近的是0.25815686583518981933593750x1.085a46p-2
当以降低的精度打印0.2581568658351898193359375时,结果为0.25815687

0.2581568 658351898            Source code
0.2581568 658351898193359375   True value
0.2581568 7                    Output

相关问题