通常の型を使用するときに浮動小数点エラーを持つPythonを認識しています。だから私はパンダを代わりに使っているのです。Pandas [Python]で浮動小数点エラーを持つFloat64フィールド
私は突然データI入力(ない計算)でいくつかの問題を持って、次の行動を説明することはできません開始しました:
In [600]: df = pd.DataFrame([[0.05], [0.05], [0.05], [0.05]], columns = ['a'])
In [601]: df.dtypes
Out[601]:
a float64
dtype: object
In [602]: df['a'].sum()
Out[602]: 0.20000000000000001
In [603]: df['a'].round(2).sum()
Out[603]: 0.20000000000000001
In [604]: (df['a'] * 1000000).round(0).sum()
Out[604]: 200000.0
In [605]: (df['a'] * 1000000).round(0).sum()/1000000
Out[605]: 0.20000000000000001
うまくいけば、誰かがどちらか私を助けてこの問題を解決するか、正しく0.2(またはを合計する方法を見つけ出すことができます私は結果が20か2000かどうかは気にしませんが、私が分け合ったときにわかるように、私は合計が間違っている同じポイントになります!)。
(import pandas as pd
を行うことを覚えている私のコードを実行するために)
これは浮動小数点数の性質です。それは単なる表現なので、無視することができます。なぜそれはあなたのために問題ですか? BTWはこれを試してみましょう: 'print(0.1 + 0.2)' – MaxU
@MaxU私はそれを得ます。それはなぜ私が0.05 * 100 = 5を行うことで解決しようとするのでしょうか、それらを合計して20を得るのです。しかし、私の問題は、システムが20.00000..001を見て、丸めさえトリックをしないように見えることです。 – Yona
[浮動小数点数学は壊れていますか?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –