1

基本的に私がやっていることは、urllib を使用して Web サイトから日付をダウンロードすることです。その数は、私が信じているバイト形式になります。したがって、次のようにして整数に変更します。これはうまくいくようです。

real_value = (int(real_value) / 100)

次に、2 つの値の差に等しい別の変数を作成します。

add_to_value = real_value - last_real_value
print(add_to_value)

奇妙なことに、これが機能することもあれば、最後に余分な数字がたくさんある結果が得られることもあれば、「9.999999999999996e-05」と表示されることもあります。

だから私は本当に混乱しています。何か案は?

4

3 に答える 3

2

浮動小数点数は、ほとんどの数値を正確に表すことができません。非常に単純な例でも:

>>> 0.1 + 0.1
0.20000000000000001

正確ではないことがわかります。浮動小数点数を使用する場合は、これに対処する必要があります。または、 Python のdecimalモジュールを使用できます。

>>> from decimal import Decimal
>>> Decimal('0.1') + Decimal('0.1')
Decimal('0.2')

decimalすべての数値を正確に表すことはできませんが、多くの 10 進数の演算を処理する場合は、より合理的な結果が得られるはずです。

于 2013-10-05T23:21:04.197 に答える
0

Python の浮動小数点に関する問題について調べてください。

あなたがpython3を使用していると仮定すると/、結果が丸められる従来のpython2の「整数除算」動作にdoubleを使用することができます。

real_value = (int(real_value) // 100)
于 2013-10-05T23:24:30.460 に答える
-1

誤った値は正常であり、正しいはずです。

これは、浮動小数点演算を使用しているためです。たとえば、表現に使用される桁数を設定することにより、結果の精度をいつでも制限できます。

参照: http://en.wikipedia.org/wiki/Floating_point

于 2013-10-05T23:33:21.827 に答える