以下のコードがそのように動作する理由を誰か説明してもらえますか? (Windows7 x64 のコマンドラインの Python です)
>>>2.22 + 0.22
2.44000000000000004
>>>(222+22)/100
2.44
以下のコードがそのように動作する理由を誰か説明してもらえますか? (Windows7 x64 のコマンドラインの Python です)
>>>2.22 + 0.22
2.44000000000000004
>>>(222+22)/100
2.44
浮動小数点演算は精度が制限されており、Python では制限が十分に文書化されています。ここでそれについて読むことができます
すべての浮動小数点演算はこのようなもので、IEEE 標準に基づいています。
浮動小数点演算はエラーを引き起こすことが知られています。
http://en.wikipedia.org/wiki/IEEE_floating_point
正確な計算が必要な場合は、decimal
モジュールを使用してください。
これはデータ形式によるものです。
2.22 + 0.22 != 2.44 // both are float
// when you use them to calculate, they are giving consistently "wrong" results
// because the datatype in itself gets incorrect when moving into deep comma space
(222+22) / 100 // becomes this in calculation
222+22 = 244 --> 244/100 = 2.44
追加する数値はfloat形式です。つまり、小数点以下の桁数があります。数学の数値の 2 行目はすべて整数なので、整数形式です。浮動小数点形式は、数式を実行しているときにエラーをスローすることが知られています。