2024-04-28 23:24:26 发布
网友
在Python程序中,我有以下两个值:
v1 = 0.00582811585976 v2 = 0.00582811608911
我的假设是v1是64位浮点值,v2是v1转换成32位浮点值。我如何才能验证这一点?
详细信息: 第一个值来自硬件板,其计算精度为64位。电路板将该值发送到PC,但它也应将该值转换为32位精度,并将其发送到另一个电路板,该电路板又将其发送到PC。我只想验证这是否真的发生了,并且我只有两个大的数字数组。
您可以使用struct module来处理数字表示:
import struct >>> struct.unpack("f", struct.pack("f", 0.00582811585976)) (0.005828116089105606,)
看起来很有道理:
>>> 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
您可以使用struct module来处理数字表示:
看起来很有道理:
相关问题 更多 >
编程相关推荐