菊澤 です。 あれからいろいろ試したのですが、環境Aでは、1.005は 1.00499...として内部では表現されているようです。 ですので、number_formatをかけると1.00になってしまう。 $a = 1.005; echo (int)($a * 1000); の結果が、1004になってしまいます。 回避するには、一旦文字列にしてやるとうまくいきます echo (int)(string)($a * 1000); 文字列にする際に1004.999...を1005に変換するようです。 1005にも内部丸目誤差でるとまずいですけど。 On 2005年2月26日 12:57:42 +0900 lange <lange @ style.ne.jp> wrote: > tosaと申します。 >> > number_format関数の仕様が変わったのでしょうか? > > それともOSの問題でしょうか? > 手元で実験してみました。 > 環境別では次のようになりました。 >> OS Linux + PHP-4.3.10 > 結果 > 1.01 > 2.01 > 3.01 >> OS Windows2k + PHP-5.0.1 > 結果 > 1.00 > 2.01 > 3.01 >> OSによる丸め誤差の違いのような気もするんですが、詳しい事 > は識者の方にお任せいたします。ちなみに > http://jp.php.net/round > のstdroundという方法を使うと求めたい値が得られるかもしれま > せん。 >> では失礼します。 >> tosa lange @ style.ne.jp >> _______________________________________________ > PHP-users mailing list PHP-users @ php.gr.jp > http://ns1.php.gr.jp/mailman/listinfo/php-users > PHP初心者のためのページ - 質問する前にはこちらをお読みください > http://www.php.gr.jp/php/novice.php3 -------------------------------------------- 菊澤 正明 mailto:kikuzawa @ cyber-coo.com (有)サイバー・クー http://www.cyber-coo.com phone.03-5785-4658 fax.03-5785-4659