如何将所有数字转换成XX,XX十进制格式没有爆炸号码或串? 喜欢;
8,9 --> 8,90
8,99 --> 8,99
12,1 --> 12,10
129,9 --> 129,90
任何想法?
如何将所有数字转换成XX,XX十进制格式没有爆炸号码或串? 喜欢;
8,9 --> 8,90
8,99 --> 8,99
12,1 --> 12,10
129,9 --> 129,90
任何想法?
您可以使用number_format ,如:
$n = 2.1;
echo number_format($n, 2, ','); // 2,10
如果你有逗号作为小数点分隔符在你的输入,你可以将值转换为浮动搭配:
$number = floatval(str_replace(',', '.', str_replace('.', '', $string_number)));
str_replace('.', '', $string_number)
用于去除千个分隔符。 str_replace(',', '.', ... )
是用来用点来代替逗号。
如果您有intl
扩展启用,这个问题(IMO)的最佳方法在接受这个问题的答案给出: PHP:无格钱
您可以使用
NumberFormatter::parseCurrency
-解析货币数量从手册例如:
$formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); var_dump($formatter->parseCurrency("75,25 €", $curr));
给出:
float(75.25)
需要注意的是, 国际延伸默认情况下不启用。 请参阅安装说明 。
在这之后,你就会有一个浮动值和格式这是一个微不足道的问题,使用number_format()
如果你没有这样的扩展名,检查出的正则表达式的方法在这样一个问题: 什么是快速的方法来清理字符串货币
$money = number_format($number, 2, ",", ","); // $number must be a float, i.e 8.8
如果您的输入必须有逗号作为小数点分隔符,就此别过:
$money = "20,2";
$fixed_money = floatval(str_replace(",", ".", $money));
echo number_format($fixed_money, 2, ",", ",");
str_pad将添加缺少的零
$val = '1008,95';
$len = strpos($val, ',') + 3;
$newval = str_pad($val, $len, '0', STR_PAD_RIGHT);
echo "Value: " . $newval . "<br>";
你必须确保你的值没有超过两位数字,虽然
我做了一个作曲家包,可以处理取决于你在哪个显示货币这样的事情。
https://packagist.org/packages/votemike/money
如果你也进入该国将格式化本地方式币(有或没有逗号,并用正确的小数位数)
$money = new Money(99.50, 'JPY');
$money->format(); //¥100
所以,如果你只是创建要显示的金额,你是在显示它的货币新资金的对象,调用 - 该对象>格式()应该给你你正在寻找的结果。