perlで計算させた値を上3ケタだけ抽出するには?
[上に]
[前に]
[次に]
討入り万歳
1999/11/28(日) 11:55:18
アクセス数を取っているのですが、
これに
一時間あたりのカウント/一日分の総カウント数*100
と、いう計算をさせたいと思っています。
計算自体はちゃんとできているのですが、
その値が例えば、98.563・・・・と不要としか思えないくらい、長く続いてしまいます。
これを値の上3桁(上の例だと98.5ですね)だけ抽出したいのですが、
どのようにしたらよいでしょうか?
andi
1999/11/28(日) 13:05:19
/(\d+\.\d)/$1/
で出来ますか。
J.Naka
1999/11/28(日) 13:12:26
ソース値を0.1で割り、その商に0.1を掛ける。
或いは文字列として98.5を取るのなら、ソース値を10倍し1で割る。
それを10進数文字列化後に、文字列右端から1文字目と二文字目に小数点を挿入する。
#言語が解からないから、具体的ソースが書けませんので、いわゆるアルゴリズムというやつを書いてみました。。
#アルゴリズムという表現であってんのかな?(笑)
B-Cus
1999/11/28(日) 14:05:09
printf("%3.1f",$num) とか。
J.Naka
1999/11/28(日) 14:11:17
>#言語が解からないから、具体的ソースが書けませんので、
あっ、タイトルに Perl と書いてあったです。(^^;
おまけに、既に正解がでてました。
andiさんの回答をもっと丁寧に書くと、
$src =~ /(\d+\.\d)/;print "$1\n";
で少数第一位から上が表示。と云うことすね。
文字列操作ではなく、数値計算としてなら↓も出来ます。
$A = int($src*10)/10;print "$A\n";
上記の処理内容ならば、文字列操作よりも数値操作のほうが処理は軽いと思います。
それと、これは上位3桁の取り出しではなく、少数第一位から上位桁すべての取り出しが正確な表現ですね。
討入り万歳
1999/11/28(日) 14:28:14
andiさん、B-Cusさん、J.Nakaさん、ご教授有り難うございました。
私のも少し説明が違ってました、
「上3桁の値を得る」のではなくて、
「小数点第1位から上の値を得るには」、でした。(^^;)
試してみたところ、上手く表示出来ました。
本当に有り難うございました。
討入り万歳
1999/11/28(日) 14:29:00
[[解決]]
解決チェック入れ忘れ(^^;)
[上に]
[前に]
[次に]