質問: microtime(true); var_dump($end); var_dump($start); var_dump($end - $start); var_dump(sprintf('%.22f', $end - $start)); ``` $end、$starともにfloat(1527350036.1264)と表示され、 $end - $startはfloat(9.0599060058594E-6)と表示されます。 最後のsprintf('%.22f', $end - $start)はstring(24) "0.0000090599060058593750"と表示されます。 $end、$starは共に同じ数字なので引いたら0になると思ったのですがこれはどういった挙動なのでしょうか。 ※追記 PHPのバージョンは7.0です。
回答: floatの精度は15桁強です。`var_dump`だと四捨五入して最大14桁しか表示されないようです。 `printf("17f\n",~);`で表示してみてください。