[PHP-users 27909] Re: 変数の数字を文字列にする

UNO Shintaro uno @ venus.dti.ne.jp
2005年 12月 21日 (水) 23:14:55 JST


> array の段階で ’’ でくくればよいのでしょうが、仕様でそれが出来ないため、困っています。

> 1.0 は 1.00 ではなく 1.0 として扱いたいので、全てを小数点下2桁にそろえるのはダメなんです。。。
> 1.2 と 1.20 は違うデータなので。
> 
>>>$num = array(1.0, 1.1, 1.2, 1.10, 1.20, 1.5);
> 
> 配列に入れた数字を、そのまま文字列に入れることは不可能なのでしょうか?

PHPは数値データの精度を内部で保存していないので、
数値にした瞬間から1.2と1.20の区別は付きません。
数値ではなく数字の文字列として扱うのであれば
任意精度関数(bcmath関数)が利用できます。
その世界に持ち込めば何とかなります。

初期データを、数値と小数点以下の桁数を組にして持たせることは可能ですか?
それが可能なら例えば次のような方法があります。

<?php
$num = array(array(1.0, 1), array(1.1, 1), array(1.2, 1), array(1.10, 2), array(1.20, 2), array(1.5, 1));
for ($i=0; $i<count($num); $i++) {
    $j = bcadd(0, $num[$i][0], $num[$i][1]);
    $numeric = is_numeric($j);
    $string = is_string($j);
    echo "$j => numeric=$numeric, string=$string<br>\n";
}
?>

-- 
UNO Shintaro, 宇野 信太郎  ( mailto:uno @ venus.dti.ne.jp )
http://www.venus.dti.ne.jp/~uno/  http://d.hatena.ne.jp/uno/



PHP-users メーリングリストの案内