![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.4ベストアンサー
- 回答日時:
1000倍して整数部分での切り捨てを行うのがわかりやすい実装では。
$value = "19.9996";
$value_int = int( $value * 1000 ); # 100倍して整数に。負の値を扱う時はint関数は不適当かもしれません。注意。
$output1 = substr( $value_int, 0, -3 ); # 整数部
$output2 = substr( $value_int, -3 ); # 小数部
print "$output1.$output2";
厳密な精度を要求する丸め動作は Perl が使用するシステム丸めを信用せず、代わりに自分自身で丸め関数を実装するべきです、とマニュアルにも書かれています。
No.5
- 回答日時:
皆さんのすばらしい回答もありますが、参考までにこんなやり方もあるんだ程度に思って貰えれば幸いです。
print &round(19.9996,3);
sub round{
my($rit);
if($_[0]=~/\./){
my($n,@a,@b);
@a=split(/\./,$_[0]);
@b=split(//,pop(@a));
push(@a,".");
for($n=0;$n<$_[1];$n++){
push(@a,$b[$n]);
}
$rit=join("",@a);
}else{$rit=$_[0];}
return $rit;
}
自作関数roundは(数字,少数点以下の桁数)を渡すと、自動的に余分な部分を切り落として、返すものです。
基本的な考え方は、整数値と小数点値に切り分けて、(配列に消えた.を入れて)小数点値を前から指定数分だけ取り出し、配列に入れて最後にドッキングさせています。
自分の求める関数がないなら無理矢理関数を作ってしまうのも手です。
本当に処理も多く、全くオススメできないソースですが、こういうやり方もあります。
No.2
- 回答日時:
#1です
$a=sprintf("%.4d",$i);
は
$a=sprintf("%.4f",$i);
です。
bazaxさん、このやり方は嫌いなんですよね?
No.1
- 回答日時:
$i=19.9996;
@a={"0","0",".","0","0","0","0"};
$a=sprintf("%.4d",$i);
$a=substr($a,0,5);
print("$a\n");
なら出来るのですが、
エスケープシーケンスで切捨ては出来たかな・・・?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- 統計学 155.2、164.4といった数字で平均値を出す場合は、その数字を四捨五入で整数にしてから÷個数で求 13 2022/10/12 16:12
- 小学校 がい数の問題の文章の意味 4 2022/11/21 14:25
- 化学 課題を理解したいので教えてください なるはやでお願いします( . .)" 100 mL の溶液中に 1 2023/05/08 23:12
- 統計学 教えてください! あるくじ引きには5枚に1枚の割合でアタリが入っていると宣伝しているが、実際には20 7 2023/05/29 09:10
- 工学 (1)抵抗値が30(Ω)のニクロム線がある。これにある電圧を加えて消費電力を測定したところ300(W 1 2022/11/07 14:35
- 工学 (1)抵抗値が30(Ω)のニクロム線がある。これにある電圧を加えて消費電力を測定したところ300(W 1 2022/11/07 14:12
- 数学 数学『データの分析』 √22を少数にする際 「4.6904…」だったので 4を四捨五入し0を切り捨て 5 2023/03/03 12:59
- 数学 x、yを整数とする。x、3x+2yを少数第一で四捨五入すると、それぞれ6、21になるという。 ⑴xの 4 2023/04/30 16:50
- その他(芸能人・有名人) 芸能人のWikipediaには身長が記載されていますよね 例えば159.6なら四捨五入したら160で 4 2023/01/28 10:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
組み合わせを作るアルゴリズム
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
VBAでの一時停止と再開の方法
-
UWSCに制限時間を付けたいです
-
perlで配列の要素が空なのを知...
-
Perl 文字列を配列に直す方法
-
VB.NETで素因数分解のプログラ...
-
Escキーを押すと、中断する時と...
-
流れ図(フローチャート)が分か...
-
Javaの質問です。 この問題の答...
-
C#の勉強を始めたばかりの者です。
-
.htaccessがループしてる?それ...
-
二次元配列における要素数のは...
-
WinAPI「MsgWaitForMultipleObj...
-
エクセルの当番表を作っていま...
-
UWSCの終了の仕方
-
perl 初等プログラミングについて
-
VBのReturnの使い方
-
HTML::Parserの解析結果
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
index関数で複数個抜き出す
-
perlで2つの配列を比較する方...
-
perlでファイルの拡張子を除い...
-
桁数指定と四捨五入
-
[Perl]長すぎるif文を簡単にしたい
-
grep関数を用いた複数行からの抽出
-
配列やハッシュで中身が同じか...
-
組み合わせを作るアルゴリズム
-
複数の配列の要素を繰り返し処...
-
正規表現に関する質問
-
データベースから取得したデー...
-
ソート時同じ値がある場合、表...
-
非共通要素を抜き出す
-
C言語の関数ポインタのイメージ...
-
Perl 戻り値の型の判定って出来...
-
配列に入った変数を二度使いたい
-
QNo.3258883データベースから取...
-
ループ中でのmy宣言と処理速度
-
print文内でのsplice文と代入に...
-
リファレンスを使った方法を教...
おすすめ情報