1

合計して、次のような別の数値をもう一度確認したいいくつかの値を取得しました。

$a = '15';
$b = '5,50';
$c = '-10';
$to_pay = '10,50';
$formated_total = number_format(($a+$b+($c)), 2, ',', ' ');
$this->assertEquals($to_pay, $formated_total);

asser 部分は私が使用しているセレン関数なので、それについては考えないでください。2 つの値が同じかどうかを確認するだけです。今私が得る結果は次のとおりです。

 - Expected
 + Actual
 -'10,50'
 +'10,00'

小数の値が失われるのはなぜですか?

4

2 に答える 2

3

「、」を小数点として使用しないでください。Excel ではありません。PHPでは、DOTを使用する必要があります

番号を次のように変更します。

$a = '15';
$b = '5.50';
$c = '-10';
$to_pay = '10.50';

またはさらに良い解決策は、それらを文字列ではなく数値として扱うことです

番号を次のように変更します。

$a = 15;
$b = 5.50;
$c = -10;
$to_pay = 10.50;

,そのようにして、代わりに使用しようとするとエラーが発生します.

この行を単純化することもできます。

$formated_total = number_format(($a+$b+($c)), 2, ',', ' ');

$formated_total = number_format($a+$b+$c, 2, ',', ' ');

なぜ結果が 10 なのか不思議に思うかもしれません。これは、number にキャストする際に、php パーサーが最初の5,50数字である 5 をチェックし、残りを無視するためです。

マニュアルから:

文字列が有効な数値データで始まる場合、これが使用される値になります。それ以外の場合、値は 0 (ゼロ) になります。

于 2013-06-04T12:53:23.857 に答える
2

コンマは有効な小数点ではないためです。ドットを使用するには$b、値を「変換」する必要があります。$to_pay

于 2013-06-04T12:52:23.943 に答える