$a=2.345;
$round=sprintf("%.2f",$a);
print $round."\n";
# 上記実行結果は「2.34」になってしまう
#Active Perl v5.10.0 built for MSWin32-x86-multi-thread
#Binary build 1005 [290470] Built May 24 2009 12:17:36
# そこで以下のような四捨五入を思いつくが
$n=2.345; #四捨五入する数
$x=100; #10の四捨五入する桁数乗
#(小数点以下 n桁で四捨五入のとき、10のn乗)
$n *= $x; #整数にするために $x倍する
$p = int($n); #不要な小数点以下をカット
$q = $n - $p; #小数点以下の差を求める3
$q *= 10; #上記の差を10倍して整数化する
if ($q >= 5) { #整数化後の数値が5より大の場合は+1
$p += 1;
}else{
print "\$qは5未満 ".sprintf("%.19f", $q )."\n";
}
$n = $p / $x; #整数化したものを、$xで割り四捨五入後の数値とする
print $n."\n";
# これでもダメなので 正確な四捨五入が必要な場合
# Math::Round::nearest (CPANモジュール)を使う
use Math::Round;
$b=2.345;
$round2=nearest(.01, $b); # 「.01」が小数点以下2桁
print $round2."\n";
dyno2316 ロヒミフ perl VBA Excel 秀丸
ラベル
- _Dyno2316 (1)
- AHCIドライバ組み込み (1)
- Boot (1)
- Excel:ショートカット (1)
- Excel:差込印刷時の日付書式 (1)
- ExcelVBA:SelectionChange (1)
- IE8:NoSearchBox (1)
- netsh:IP設定 (1)
- Perl:CSV形式の分解 (1)
- Perl:Dumper (1)
- Perl:join sprintf unpackなど (1)
- Perl:ParseExcel (1)
- Perl:Smart::Comments (1)
- Perl:ハッシュの要素の存在・定義・真偽 (1)
- Perl:ファイルの入出力 (1)
- Perl:ファイル入力と正規表現で抽出 (1)
- Perl:リンク (1)
- Perl:現時刻を日本語形式で (1)
- Perl:四捨五入 (1)
- Perl:重複行を削除 (1)
- PerlTips (2)
- VistaPE (1)
- Win:Tips (1)
- Win7:TIPS (1)
- Win7:TIPS OEの移行 (1)
- Win7:強化されたファイァーウォール設定 (1)
- WinPE (1)
- 秀丸マクロ:カラーマーカー (1)
四捨五入
ラベル:
Perl:四捨五入