アプリ版:「スタンプのみでお礼する」機能のリリースについて

014.5
002.1
のような小数点つきで整数の部分を3桁に揃えた
文字列のはじめの「0」や「00」を消して
普通の数字に戻したいのですが、どの様にすればよいのでしょうか?

厄介でしょうが、よろしくお願いします。

A 回答 (3件)

単に数値化するなら算術式を与えれば数値項目として処理されます。



$str = '014.5';
$Result = 0 + $str;
print $Result; # Result → 14.5
$str = '000.5';
$Result = 0 + $str;
print $Result; # Result → 0.5
$str = '014';
$Result = 0 + $str;
print $Result; # Result → 14
    • good
    • 0
この回答へのお礼

分かりやすい解説で助かりました。

ありがとうございましたm(_ _)m

お礼日時:2005/10/15 00:49

文字列は数値演算すれば数値として解釈されるので、$num に値が入っているとして


$num += 0;
でよいでしょう。

正規表現でも
$num =~ s/^0*(\d+\.\d+)/$1/;
とすればできます。

printf でもできますが、
$num = sprintf "%.*f", length(substr($num,index($num,'.')+1)), $num;
とすればできますが、あまりに複雑なので利用する価値はないでしょう。

ちなみに printf の %X.Yf という指定は、整数部、小数点、小数部の全てを含めた全体の最低桁数を X、小数部の桁数を Y として指定するもので、No.1 さんの「整数X.小数Yに」という解釈は誤りです。
    • good
    • 0
この回答へのお礼

すごい詳しいですね。
ありがとうございましたm(_ _)m

お礼日時:2005/10/15 00:52

$num = "002.1";


$num =~ s/^0+//; #頭の0を削除
print "$num\n";
などではいかがでしょう?

$num = sprintf("%2.2f\n", $num); #整数2.小数2に
なども使えそうです。

この回答への補足

下の方法でやると今度は少数点以下が2桁で表示されたりいろいろ
おかしなことが起こったので、
正常に動作した上の方法でやろうと思うのですが、
000.4
などの小数のみで構成されてる文字は、変換すると
.4
になってしまいます。
0.4
にできないでしょうか?
よろしくお願いします。

補足日時:2005/10/14 17:54
    • good
    • 0

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