1

次の説明を手伝ってくれる人はいますか?同じ数字を Google に入力すると、コードで取得しているのと同じ結果が得られます....

1089.80 % 0.04 = 0
1089.84 % 0.04 = 0.04 - Surely this is wrong? 0.04 goes into 1089.84 with no remainder.
1089.88 % 0.04 = 0
1089.92 % 0.04 = 0

一見正しいはずの他の数値についても、同様の動作が見られます。

前もって感謝します!

4

2 に答える 2

4

丸められた値を見ています。内部的には、番号は 1089.84 ではなく、1089.84000026 のようなものです。

「正しい」値が必要な場合は、両辺に 100 を掛け、0.5 を足して (int)、整数 mod を取り、結果を float に変換します。

于 2011-07-29T12:26:41.203 に答える
3

実際、0.04 は 1089.84 に余りがありません。ただし、それはコンピュータに実行を求めている計算ではありません。

1089.84 も 0.04 も浮動小数点数として表現できません。したがって、各倍精度リテラルは、最も近い表現可能な値に丸められます。実際に計算しているのは次のとおりです。

1089.839999999999918145476840436458587646484375 % 0.040000000000000000832667268468867405317723751068115234375

正確には

0.039999999999895459457111002166129765100777149200439453125

結果を印刷すると、表示のために小数点以下の桁数が四捨五入されるため、0.04 と表示されます。

于 2011-08-01T00:01:46.147 に答える