プログラミング言語の丸め関数
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/28 01:06 UTC 版)
「端数処理」の記事における「プログラミング言語の丸め関数」の解説
同様にビット操作で実装されるものであるが、プログラミング言語の関数などで丸めの機能が提供されている。FPUで実装されていることも多い。 通常は、丸め関数の丸め幅は1で、それ以外の丸め幅に対しては、丸め前に丸め幅で割り丸め後に丸め幅を掛ける、というのが一般的なレシピである。これは、割ったり掛けたりするのはプログラマの責任であり、処理系は「小数点以下の丸め」のみに責任を持つ、という明確な責任の分界点のあらわれである。第2引数以降で丸め幅を指定できる環境もある(が、次で述べるように問題がある)。 Ruby(やPHP)など一部の言語のライブラリでは、(十進で)小数点以下何桁目で丸める、ということを引数で指定できるものがあるが、仕様に問題がある。よく知られているように一般的な二進の浮動小数点表現では、例えばきっかり 0.1 という値は表現できない。ということは、たとえば 0.11 を小数点以下1桁に丸めた結果として 0.1 が欲しい、と要求しても、その 0.1 は内部的には「丸めた」結果とは本来は言えないものだからである。そのような計算に関する、いくつかのモデルの立て方は考えられるが、いずれにしろ元々の要求のほうが無理としたほうが妥当である。 丸め関数が返す値は、小数点以下が全てゼロの値、という意味では整数だが、型は引数と同様に浮動小数点型というものも多い。これは理論的な理由よりは実際上の理由で、以前は一般的な整数型であった32ビット固定長整数で表現できる整数の範囲よりも、一般的な浮動小数点型である倍精度浮動小数点型で正確に表現できる整数の範囲のほうが広いためである。
※この「プログラミング言語の丸め関数」の解説は、「端数処理」の解説の一部です。
「プログラミング言語の丸め関数」を含む「端数処理」の記事については、「端数処理」の概要を参照ください。
- プログラミング言語の丸め関数のページへのリンク