十进制格式的钱(Decimal money format)

2019-10-17 13:33发布

如何将所有数字转换成XX,XX十进制格式没有爆炸号码或串? 喜欢;

8,9 --> 8,90

8,99 --> 8,99

12,1 --> 12,10

129,9 --> 129,90

任何想法?

Answer 1:

您可以使用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(',', '.', ... )是用来用点来代替逗号。



Answer 2:

如果您有intl扩展启用,这个问题(IMO)的最佳方法在接受这个问题的答案给出: PHP:无格钱

您可以使用

  • NumberFormatter::parseCurrency -解析货币数量

从手册例如:

 $formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); var_dump($formatter->parseCurrency("75,25 €", $curr)); 

给出: float(75.25)

需要注意的是, 国际延伸默认情况下不启用。 请参阅安装说明 。

在这之后,你就会有一个浮动值和格式这是一个微不足道的问题,使用number_format()

如果你没有这样的扩展名,检查出的正则表达式的方法在这样一个问题: 什么是快速的方法来清理字符串货币



Answer 3:

$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, ",", ",");


Answer 4:

str_pad将添加缺少的零

$val = '1008,95';
$len = strpos($val, ',') + 3;
$newval = str_pad($val, $len, '0', STR_PAD_RIGHT);
echo "Value: " . $newval . "<br>";

你必须确保你的值没有超过两位数字,虽然



Answer 5:

我做了一个作曲家包,可以处理取决于你在哪个显示货币这样的事情。

https://packagist.org/packages/votemike/money

如果你也进入该国将格式化本地方式币(有或没有逗号,并用正确的小数位数)

$money = new Money(99.50, 'JPY');
$money->format(); //¥100

所以,如果你只是创建要显示的金额,你是在显示它的货币新资金的对象,调用 - 该对象>格式()应该给你你正在寻找的结果。



文章来源: Decimal money format