8

Python プログラムでは、次の 2 つの値があります。

v1 = 0.00582811585976
v2 = 0.00582811608911

私の仮説では、v1 は 64 ビットの浮動小数点値であり、v2 は v1 を 32 ビットの浮動小数点値に変換したものです。どうすればこれを確認できますか?

詳細:
最初の値は、64 ビットの精度で計算するハードウェア ボードから取得されます。ボードは値を PC に送信しますが、値を 32 ビット精度に変換して別のボードに送信し、別のボードがそれを PC に送信する必要もあります。これが実際に起こっていることを確認したいだけで、私が持っているのは2つの大きな数字の配列だけです。

4

2 に答える 2

11

struct モジュールを使用して、数値表現で遊ぶことができます。

import struct

>>> struct.unpack("f", struct.pack("f", 0.00582811585976))
(0.005828116089105606,)
于 2012-11-08T15:05:46.190 に答える
8

もっともらしいように見えます:

>>> 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
于 2012-11-08T15:03:27.583 に答える