sprintf
PHPがいくつかの数字を変更しているように見えるという奇妙な問題があります。これは常に発生するわけではなく、たまに発生します。
次のコード:
echo sprintf('%04d',$product['priceUSD']*100)."(".($product['priceUSD']*100).")";
$19.99 の製品に対して次の出力が生成されます。1998(1999)
私はこれを回避することができますが、なぜそれが行われているのか、そして明らかな狂気への方法があるかどうかを知りたい.
更新: float から int への変換時に発生しているようです。以下は同じ出力を与えます:
echo (int)($product['priceUSD']*100)."(".($product['priceUSD']*100).")";