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 部分是我正在使用的 selenium 函数,所以不要考虑这一点,它只是应该检查 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。这是因为在将其转换为数字时,php 解析器会检查5,50开头的数字 5,而忽略其余部分。

手册

如果字符串以有效的数字数据开头,这将是使用的值。否则,该值将为 0(零)。

于 2013-06-04T12:53:23.857 回答
2

因为逗号不是有效的小数点。您需要“转换”$b$to_pay值以使用点。

于 2013-06-04T12:52:23.943 回答