Number_formatを使用して、浮動小数点数を小数点以下2桁に丸めています。問題は、入力の中には、そもそも小数点以下2桁を超えないものがあることです。したがって、コード:
_number_format($value, 2)
_
十分な10進数がない場合に平和的に0を追加する代わりに、Apacheログ内でエラーが発生するため、これは望ましくありません。
したがって、number_format(2.1, 2)
またはnumber_format(0, 2)
はApacheログでエラーを発生させます。
[Thu Jun 30 17:18:04 2011] [error] [client 127.0.0.1] PHP注意:/ home/tahoang/Desktop/Projects/weatherDataで整形式でない数値が見つかりました41行目の/weatherData.php
これを修正する方法は?
number_format() の最初のパラメーターをfloatに型キャストしてみてください:
$format = number_format((float)0, 2);
または
$format = number_format(floatval(0), 2);
小数点を置き換えてから、浮動小数点数にキャストしてください。
var_dump((float)number_format((float)str_replace(",", ".", "20,5"), 2, ".", ""));
result: float(20.5);
交換せずに:
var_dump((float)number_format(floatval("20,5"), 2, ".", ""));
result: float(20);
var_dump((float)number_format((float) "20,5", 2, ".", ""));
result: float(20);
私はこれを使用しました:
str_replace(array(".", ","), array(",", "."), $value)
多分それは誰かを助けるでしょう。
計算を行うときは、
number_format($value, 2, ".", "")
また、末尾に.00が付いた数値(「50.5」ではなく「50.50」など)を表示する場合は、次を使用します。
numer_format($value, 2)
関数はそれを文字列として認識しています。
ゼロを追加して数値に変換します。
number_format($NUMBER+0)