1

奇数の整数を 2 で割ったときにエラーが表示される方が、間違った計算よりも優れていると思いませんか?

Ruby での例 (int と float は一般的なデータ型であるため、他の言語でも同じだと思います):

39 / 2 => 19

整数で割った浮動小数点数 (39.0) ではなく、整数で割った整数の値を求めているため、出力が 19.5 ではないことがわかります。私の質問は、これらのデータ型の制限により正しい値の計算が妨げられている場合、なぜ最も正確でない値を出力するのでしょうか?

  • 正解 = 19.5
  • 正解っぽい = 20 (切り上げ)
  • 最も不正確 = 19
4

3 に答える 3

6

エラーが表示されたほうがいいのではないでしょうか。

エラーをスローすることは、通常、非常に逆効果であり、ほとんどの言語で計算効率が悪くなります。

そして、これはしばしば有用な振る舞いであると考えてください。

total_minutes = 563;
hours   = total_minutes / 60;
minutes = total_minutes % 60;

  • 正解=19.5
  • 正解=20(切り上げ)
  • 正しくない=19

20が19よりも正しいと誰が言ったのですか?

于 2012-05-28T19:57:09.137 に答える
3

除算とモジュロの兄弟演算子の間に次の非常に有用な関係を維持する他の理由の中でも。

商:a / b = Q

残り:a % b = R

素晴らしい関係:a = b*Q + R

また、整数を2で除算すると、1ビットの右シフトや他の多くの優れた関係と同じ結果が返されます。

しかし、秘密の主な理由は、Cがこのようにしたことであり、あなたは単にCと議論しないでください!

于 2012-05-28T20:01:01.893 に答える
1

2.0 で除算すると、Ruby で正しい結果が得られます。

39 / 2.0 => 19.5
于 2013-01-28T10:51:57.050 に答える