1

以下のコードがそのように動作する理由を誰か説明してもらえますか? (Windows7 x64 のコマンドラインの Python です)

>>>2.22 + 0.22
2.44000000000000004
>>>(222+22)/100
2.44
4

5 に答える 5

5

浮動小数点演算は精度が制限されており、Python では制限が十分に文書化されています。ここでそれについて読むことができます

于 2012-11-07T09:31:20.177 に答える
3

すべての浮動小数点演算はこのようなもので、IEEE 標準に基づいています。

于 2012-11-07T09:30:35.683 に答える
3

浮動小数点演算はエラーを引き起こすことが知られています。

http://en.wikipedia.org/wiki/IEEE_floating_point

正確な計算が必要な場合は、decimalモジュールを使用してください。

于 2012-11-07T09:30:59.093 に答える
1

これはデータ形式によるものです。

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 
于 2012-11-07T09:32:06.873 に答える
0

追加する数値はfloat形式です。つまり、小数点以下の桁数があります。数学の数値の 2 行目はすべて整数なので、整数形式です。浮動小数点形式は、数式を実行しているときにエラーをスローすることが知られています。

于 2012-11-07T10:29:17.307 に答える