[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 メーリングリストの案内