MW211 EXIT

devlog
PHP/浮動小数点型とフォーマット指定子
2013年11月03日
「sprintf('%.f')」で浮動小数点型を表示する場合、
こまかく表示しすぎると誤差がでてしまう。
┌──────────────────────────────────────┐
│sprintf('%.17f', 0.7);                                 →0.69999999999999996│
└──────────────────────────────────────┘

でも、端数を四捨五入してくれるらしいので、
ある程度まで粒度を下げると、正しい値になってくれる。
┌──────────────────────────────────────┐
│sprintf('%.16f', 0.7);                                 →0.7000000000000000 │
└──────────────────────────────────────┘
こいつが、端数切捨てで「0.699…」だったら大変だ。

ちょっと気になったのでついでに。
┌──────────────────────────────────────┐
│sprintf('%.f'  , 0.7);                                 →0.700000           │
└──────────────────────────────────────┘

なお、ちなみに「%.F」(こちらはfloat型、「%.f」はdouble型)も同じ結果。
分類:PHP