端数処理
丸めは任意の丸め幅に対し可能だが、以下では特に断らない限り、丸め幅を1とする(後段の「#例」では、丸め幅は0.1である)。任意の丸め幅で丸めるには、丸める前に丸め幅で割り、丸めた後に丸め幅をかける。
主に正数について述べるが、負数についても適宜述べる。
多くの環境では、床関数(負の無限大へ)、天井関数(正の無限大へ)、切り落とし関数(0へ)が実装されている(床関数と天井関数)。それぞれの関数名には、次のようなものが使われる。
床関数 - floor
天井関数 - ceil、ceiling
切り落とし関数 - trunc、truncate、fix
これらは、5つのIEEE丸めモードのうちの3つの方向丸めに対応している。偶数への丸めの実装率は、これらより劣る。無限大への丸めが実装されている環境は少ない。
例: ±3.7 を丸め幅1で丸める。
ceil(3.7) = 4, ceil(-3.7) = -3
floor(3.7) = 3, floor(-3.7) = -4
trunc(3.7) = 3, trunc(-3.7) = -3
端数が0.5以下なら切り捨て、0.5超なら切り上げる丸めを「五捨五超入」という。
0.5は常に切り上げられる四捨五入とは逆の特徴を持つ。端数がランダムでない場合は、わずかに負のバイアスが発生しうる。
正の数に対しては、0.5を引いて切り上げることで得られる。