07/05/11 17:41:10
質問です。
Webで拾った以下の数値切り上げ関数を使用しています。
----------------------------------------
$one = ceil(19.1); # $one = 20
sub ceil {
my $var = shift;
my $a = 0;
$a = 1 if($var > 0 and $var != int($var));
return int($var + $a);
}
----------------------------------------
しかし、このceil関数に、(4.4 * 6000)という数値(26400)を引数として計算すると、26401が帰ってきます。
perl -e 'print sprintf("%.50f", (4.4 * 6000));';
を実行すると、
26400.00000000000363797880709171295166015625000000000000
という結果が返ってきました。
これを回避して、期待したとおりの切り上げ結果を返すにはどうすればいいでしょうか?