0

この現象を観察したことがありますか。

Visual Studio 2010 C#.NetのImmediateWindowで次の計算を計算しようとすると、この奇妙な解決策が得られます。

1E-9 * 100 = 0.00000010000000000000001
1E-9 * 1E+2 = 0.00000010000000000000001

このように計算しても、次のようになります。

double val = 1E-9;
0.000000001
val = val * 100;
0.00000010000000000000001

Windows calcで同じ計算を計算すると、期待どおりの結果が得られます。

1E-9 * 100 = 0,0000001

誰かがこの振る舞いについて何か知っているなら、私はその情報を手に入れてとてもうれしく思います。

4

1 に答える 1

0

指数表記を使用するかどうかは関係ありません。浮動小数点の精度に直面しているだけです。精度を上げたい場合は、10 進数を使用してください。

decimal val = 1E-9;
0.000000001
val = val * 100;
0.0000001

すべてのコンピューター科学者が浮動小数点演算について知っておくべきことをご覧ください

于 2012-07-26T13:30:40.730 に答える