hnwの日記

PHPの浮動小数点数の表示

PHPのround関数のリファレンスマニュアルのページに面白いコメントを見つけたので紹介します。

<?php
echo 1100000.0, "\n";
echo 1200000.0, "\n";
echo 1300000.0, "\n";
echo 1400000.0, "\n";


上記のプログラムをPHPのバージョン5.2.2〜5.2.6のいずれかで実行すると、下記の結果が得られます。

1100000
1.2E+6
1300000
1.4E+6


これはキモいですね。print_rやvar_dumpでも同様の挙動です。


興味がわかなかったので原因は追いかけていません。この挙動が影響するようなコードを書いている人は、printfを使う習慣を身につけるべきだと思います。