[英]PHP number_format error
我有一个像这样的字符串:
R$10,25
我需要将其转换为:
10.25
我正在尝试:
$value = 'R$10,20';
$value_subs = str_replace(array('R', '$'), '', $value);
$value_formated = number_format($value_subs, 2, ',', '.');
之后,我将$value_formated
值与另一个值进行比较,例如:
$another_value = 20.40;
if($value_formated <= $another_value)
{
//Error
}
else
{
//Proceed
}
但是我收到错误A格式不正确的数值 。
如何实现呢? 请记住,我从客户端收到了$value
变量的$value
,因此,这里可以存在任何内容,但是如果不符合if($value_formated <= $another_value)
,我将通过它。
结合@Hayden Schiff的答案
<?php
$value = 'R$10,20';
$value_subs = str_replace(array('R', '$',','), array('','','.'), $value);
$value_formated = floatval($value_subs);
$another_value = 20.40;
if($value_formated <= $another_value)
{
echo "Less or equal";
}
else
{
echo "Greater";
}
更换,
到.
然后将结果解析为浮点数
逗号不是PHP中默认的小数点分隔符,这就是为什么只考虑整数部分的原因(因为逗号不被视为数字的一部分)。
要解决此问题,您需要将此逗号替换为一个点。
方式:
$str = strtr($str, ['R' => '', '$' => '', ',' => '.']);
echo number_format($str, 2, ',', '.');
注意:例如,如果要从原始字符串中删除用作千位分隔符的点而不影响小数点分隔符,可以使用strtr
代替str_replace
以避免循环替换:
$str = strtr('R$100.000.000,25', ['R' => '', '$' => '', ',' => '.', '.' => '']);
echo number_format($str, 2, ',', '.');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.