PHP更改小数点分隔符

Arn*_*nau 5 php decimal

在某些情况下,PHP 会在操作后更改小数点分隔符,下面是一个示例:

<?php    
echo $amount; //21.960000
echo $this->obj_vat->vat; //10.00
$amount= $amount + ( $amount * ( $this->obj_vat->vat / 100 ) );
echo $amount; //24,156
?>
Run Code Online (Sandbox Code Playgroud)

为什么小数点分隔符变成“,”?


这是一个多语言网站。在西班牙语版本中,区域设置设置为西班牙语 (es_ES),小数点分隔符为“,”。这就是为什么正在改变。

解决方案是强制 LC_NUMERIC 为英文:

setlocale( LC_ALL, $locale );

setlocale( LC_NUMERIC, 'en_GB' );
Run Code Online (Sandbox Code Playgroud)

但我不知道这是否是一个正确的解决方案。

Con*_*enu 1

在内部,PHP 将 amount 变量存储为浮点数,因此问题在于显示该值的时间。尝试这个:

<?php    
echo $amount; //21.960000
echo $this->obj_vat->vat; //10.00
$amount= $amount + ( $amount * ( $this->obj_vat->vat / 100 ) );
echo number_format($amount, 2, '.', ',');
Run Code Online (Sandbox Code Playgroud)

在这里查看演示:http://sandbox.onlinephpfunctions.com/code/ba34855a2de309c842c7ce678713f4168a852999