在Python中将double转换为float

2024-04-28 23:24:26 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python程序中,我有以下两个值:

v1 = 0.00582811585976
v2 = 0.00582811608911

我的假设是v1是64位浮点值,v2是v1转换成32位浮点值。我如何才能验证这一点?

详细信息:
第一个值来自硬件板,其计算精度为64位。电路板将该值发送到PC,但它也应将该值转换为32位精度,并将其发送到另一个电路板,该电路板又将其发送到PC。我只想验证这是否真的发生了,并且我只有两个大的数字数组。


Tags: 程序硬件精度详细信息数字数组v2浮点
2条回答

您可以使用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

相关问题 更多 >