在Python中将double转换为float

时间:2012-11-08 15:00:44

标签: python floating-point double

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

v1 = 0.00582811585976
v2 = 0.00582811608911

我的假设是v1是64位浮点值,v2是v1转换为32位浮点值。我如何验证这个?

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

2 个答案:

答案 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