2

違いは何ですか

.3+.3+.3+.1 == 1

false を返しますが、

.3+.3+.1+.3 == 1

true を返しますか? これは Python にも当てはまります。

4

2 に答える 2

6

これは浮動小数点演算によるものです。ieee754関数を使用して、浮動小数点表現を確認できます。

>> ieee754(.3+.3+.3+.1)

ans =

0011111111101111111111111111111111111111111111111111111111111111

>> ieee754(.3+.3+.1+.3)

ans =

0011111111110000000000000000000000000000000000000000000000000000
于 2012-05-30T21:58:41.267 に答える
3

これは、一般的な有限精度演算の一般的な結果です。特定の精度で表現可能な浮動小数点数のセットは、すべての実数のセットのサブセットのみを形成します。そのため、コンピューターで使用可能な有限量の浮動小数点表現と正確に等しい数値のみが使用されます。そのため、数値のいずれかがその有限精度表現とまったく同じでない限り、メモリ内のバイトとして表される実際の数値は実際には近似値にすぎません。これらの数値で演算を実行すると、エラーが伝播します。この種のものをより完全かつ正確に定義するために、数値解析に関する調査を行ってください。

于 2012-05-30T22:20:32.910 に答える