2

さて、これでどうしたの?

irb(main):001:0> 4/3
=> 1
irb(main):002:0> 7/8
=> 0
irb(main):003:0> 5/2
=> 2

ここでRubyが整数除算を行っていることはわかっていますが、なぜですか? Ruby のように柔軟な言語では5/2、実際の数学的結果を返せないのはなぜ5/2ですか? 私が見逃している整数除算の一般的な用途はありますか? 7/8返還を行う0ことは、そこから得られる可能性のある利益よりも多くの混乱を引き起こすように私には思えます. Rubyがこれを行う本当の理由はありますか?

4

1 に答える 1

4

作成中のほとんどの言語 (高度な/高レベルのものでさえ) がそれを行うからですか? C、C++、Java、Perl、Python の整数に対して同じ動作をします... これはユークリッド除算です(したがって、対応するモジュロ%演算子)。

整数除算演算は、多くのアーキテクチャでハードウェア レベルでも実装されています。の人がこの質問をしましたが、その理由の 1 つは対称性です。see などの静的型付き言語では、これにより、すべての整数演算が精度を失うことなく整数を返すことができます。また、C はその上の一種の拡張レイヤーとして設計されているため、対応する低レベルのアセンブラー操作に簡単にアクセスできます。

さらに、リンクされた記事への 1 つのコメントで説明されているように、浮動小数点演算は長年にわたってコストがかかり (またはすべてのアーキテクチャでサポートされていない)、データセットを固定ロットに分割するなどのプロセスには必要ありませんでした。

于 2012-09-28T13:53:49.723 に答える