Location : Home > Languages > Perl > Package Title : Math::Round |
![]() |
Math::Round - 様々な丸め計算
use Math::Round qw(...those desired... or :all); $rounded = round($scalar); @rounded = round(LIST...); $rounded = nearest($target, $scalar); @rounded = nearest($target, LIST...); # 他の関数も同様。
Math::Round は様々な方法で数値を丸める。関数 round 及び nearest はデフォルトでエクスポートされる。他の関数は以下に記述する方法でエクスポートされる。 "use ... qw(:all)" と書けば全関数がエクスポートされる。
round LIST
最も近い整数に丸める。スカラーに対しては単一の値を返す。リストに対しては値のリストを返す。
整数の間にある数値は無限大の方向に丸められる。すなわち正の値は繰りあげられ(例えば 2.5 は 3 になる)、負の値は繰り下げられる(例えば -2.5 は -3 になる)。
round_even LIST
最も近い整数に丸める。スカラーに対しては単一の値を返す。リストに対しては値のリストを返す。
ただし整数の間にある数値は最も近い偶数に丸められる。例えば 2.5 は 2 に、3.5 は 4 に、-2.5 は -2 になる。
round_odd LIST
最も近い整数に丸める。スカラーに対しては単一の値を返す。リストに対しては値のリストを返す。
ただし整数の間にある数値は最も近い奇数に丸められる。例えば 3.5 は 3 に、4.5 は 5 に、-3.5 は -3 になる。
round_rand LIST
最も近い整数に丸める。スカラーに対しては単一の値を返す。リストに対しては値のリストを返す。
整数の間にある値はランダムに切り上げられたり切り下げられたりする。試行回数を大きくすれば 2.5 が 2 になる回数と 3 になる回数はほぼ同じになる。
nearest TARGET, LIST
最も近い TARGET の倍数の値に丸める。
TARGET は正でなければならない。
スカラーに対しては単一の値を返す。リストに対しては値のリストを返す。
整数の間にある値は無限大の方向に丸められる。例えば
nearest(10, 44) = 40 nearest(10, 46) = 50 nearest(10, 45) = 50 nearest(25, 328) = 325 nearest(.1, 4.567) = 4.6 nearest(10, -45) = -50
nearest_ceil TARGET, LIST
最も近い TARGET の倍数の値に丸める。
TARGET は正でなければならない。
スカラーに対しては単一の値を返す。リストに対しては値のリストを返す。
2つの倍数の間の数値は ceiling に、すなわち代数的に高い倍数に丸められる。例えば
nearest_ceil(10, 44) = 40 nearest_ceil(10, 45) = 50 nearest_ceil(10, -45) = -40
nearest_floor TARGET, LIST
nearest_floor(10, 44) = 40 nearest_floor(10, 45) = 40 nearest_floor(10, -45) = -50
nearest_rand TARGET, LIST
nlowmult TARGET, LIST
nlowmult(10, 44) = 40 nlowmult(10, 46) = 40 nlowmult(25, 328) = 325 nlowmult(.1, 4.567) = 4.5 nlowmult(10, -41) = -50
nhimult TARGET, LIST
LIST で指定された数値より大きい最小の TARGET の倍数を返す。
TARGET は正でなければならない。
スカラーに対しては単一の値を返す。リストに対しては値のリストを返す。
2つの倍数の間の数値は代数的に高い値に丸められる。例えば
nhimult(10, 44) = 50 nhimult(10, 46) = 50 nhimult(25, 328) = 350 nhimult(.1, 4.512) = 4.6 nhimult(10, -49) = -40
浮動小数点は、もちろん、実数の有理数の部分集合であり、それゆえに計算が常に正確とは限らない。この問題を回避するためにこれらのルーチンでは 1/2 に対して 0.5 より微妙に大きい値を与えている。
しかしながら丸められた数値は浮動小数点として格納され、その精度は通常通りハードウェアか C コンパイラなどに依存する。このように 1/2 の数値をわずかに大きい値で格納することは驚くべきことではない。
Math::Round は2000年10月に Geoffrey Rommel <GROMMEL@cpan.org> によって書かれた。
![]() |
Updated : 2006/11/14 |