数值意外地向下舍入

Ben*_*son 1 php math rounding subtraction addition

我有一个循环计算几个收入值,然后将它们加在一起,如下所示:

$SalesGrowth = $C2012Sales+$C2011Sales;
Run Code Online (Sandbox Code Playgroud)

在某些情况下,这是有效的,我得到了预期,例如:761.9 + 759.0 = 1520.9

在其他情况下,它看起来像PHP随机决定圆不正确(??)和更改单位(?),我得到:

8,788.0 + 8,794.3 = 16

这里发生了什么?我甚至试图回应由空格分隔的单独销售价值,并且它们正确显示,因此基本数字没有错.

Ker*_* SB 9

解释为数字,8,788.0只是8,解析停在逗号处.

如果你想允许像千位分隔符这样的噱头,你需要一些区域设置感知的数字解析.


更新:如果您有Zend Framework,您可以这样做:

require_once('Zend/Locale/Format.php');

$locale = new Zend_Locale('en_GB'); // #1

$v = "8,410.5";
$n = Zend_Locale_Format::getNumber($v, array('locale' => $locale,'precision' => 3));

echo 2 * $number;   // prints "16821"
Run Code Online (Sandbox Code Playgroud)

您可以尝试从环境中获取它,而不是对区域设置进行硬编码: new Zend_Locale(setlocale(LC_ALL, ""))