プロが教える店舗&オフィスのセキュリティ対策術

$number =~ s/(\d+\.\d+)/sprintf("%.2f", $1)/eg;
$number =~ s/(\d+)(\.)(0)/$1/eg;

小数点の表示を上記のようにしてあります。
更に増減させる最小単位も指定したいのですが、
方法がわかりません。

例えば0.25単位で増減させたい場合は、
1.18なら、1.25
2.36なら、2.50
という感じです。

お手数ですが、宜しくお願いいたします。

A 回答 (3件)

0.25 単位の切り上げと考えれば、POSIX の ceil 関数でよいと思います。



use POSIX;
print ceil(1.18/0.25) * 0.25, "\n"; #=> 1.25
print ceil(2.36/0.25) * 0.25, "\n"; #=> 2.5
print ceil(2.249/0.25) * 0.25, "\n"; #=> 2.25
print ceil(2.25/0.25) * 0.25, "\n"; #=> 2.25
print ceil(2.251/0.25) * 0.25, "\n"; #=> 2.5
exit;
    • good
    • 0
この回答へのお礼

有難うございます。t-okura様の方法を参考に、おかげさまで解決できました。

お礼日時:2009/06/22 22:24

小数点2桁の数値を 0.25単位で切り上げるなら、これでどうですか。


$num=1.18;
printf("%1.2f",int($num)+int(($num-int($num))/0.25)*0.25+(((($num-int($num))*100))%25?0.25:0));
    • good
    • 0
この回答へのお礼

参考になるご回答をありがとうございます。いろいろな方法があって大変勉強になりました。

お礼日時:2009/06/22 22:25

$num = 1.18;


$num /= 0.25;
if($num%1){
$num = int($num+1);
}
$num *= 0.25;
    • good
    • 0
この回答へのお礼

ありがとうございます。大変参考になりました。

お礼日時:2009/06/22 22:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!