web-dev-qa-db-ja.com

number_format()により、「整形式でない数値が見つかりました」というエラーが発生します

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

これを修正する方法は?

13
Tu Hoang

number_format() の最初のパラメーターをfloatに型キャストしてみてください:

$format = number_format((float)0, 2);

または

$format = number_format(floatval(0), 2);
46
Emre Yazici

小数点を置き換えてから、浮動小数点数にキャストしてください。

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);
6
user2659841

私はこれを使用しました:

str_replace(array(".", ","), array(",", "."), $value)

多分それは誰かを助けるでしょう。

0
Matheno

計算を行うときは、

number_format($value, 2, ".", "")

また、末尾に.00が付いた数値(「50.5」ではなく「50.50」など)を表示する場合は、次を使用します。

numer_format($value, 2)

0
Leo Chashchin

関数はそれを文字列として認識しています。

ゼロを追加して数値に変換します。

number_format($NUMBER+0)
0
Elyor