PHP更改小数分隔符

时间:2017-01-31 09:40:09

标签: 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
?>

为什么小数点分隔符更改为&#39;,&#39;?

这是一个多语言网站。在西班牙语版本中,语言环境设置为西班牙语(es_ES),小数点分隔符为&#39;,&#39;。这就是改变的原因。

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

setlocale( LC_ALL, $locale );

setlocale( LC_NUMERIC, 'en_GB' );

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

3 个答案:

答案 0 :(得分:1)

在内部,PHP将amount变量存储为float,因此问题在于显示该值。 试试这个:

<?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, '.', ',');

在此处查看演示:http://sandbox.onlinephpfunctions.com/code/ba34855a2de309c842c7ce678713f4168a852999

答案 1 :(得分:0)

每一个想法都很好。

对于你的信息,你可以这样思考,

<?php    
echo $amount; //21.960000
echo $this->obj_vat->vat; //10.00
$amount= $amount + ( $amount * ( $this->obj_vat->vat / 100 ) );
echo (float) $amount; //24.156
?>

答案 2 :(得分:-1)

这是一个本地配置问题,可能是在最近安装了php-intl之后导致的,无意中为您更改了此内容。

编辑您的const found = findFolder(projectFolders, folderId)文件,并将/etc/default/locale行更改为

LC_NUMERIC

您可能要在那里更改任何其他设置,然后重新启动。