在Python程序中,我有以下两个值:
v1 = 0.00582811585976
v2 = 0.00582811608911
我的假设是v1是64位浮点值,v2是v1转换为32位浮点值。我如何验证这个?
详细说明:
第一个值来自硬件板,以64位精度计算。电路板将值发送到PC,但它也应将该值转换为32位精度并将其发送到另一个电路板,然后再将其发送到PC。我只是想验证这是否真的发生了,我只有两个大数字数组。
答案 0 :(得分:9)
您可以使用struct module来播放数字表示:
import struct
>>> struct.unpack("f", struct.pack("f", 0.00582811585976))
(0.005828116089105606,)
答案 1 :(得分:7)
看起来似乎有道理:
>>> v1 = 0.00582811585976
>>> v2 = 0.00582811608911
>>> import numpy as np
>>> np.float32(v1)
0.0058281161
>>> float(np.float32(v1)) #convert to 32bit and then back to 64bit
0.005828116089105606 #This rounds to v2 if you're printing 14 places of precision ...
>>> '%.14f'%np.float32(v1)
'0.00582811608911'
>>> '%.14f'%np.float32(v1) == '%.14f'%v2
True