如何將所有數字轉換爲xx,xx十進制格式而不爆炸數字或字符串? like;十進制格式
8,9 --> 8,90
8,99 --> 8,99
12,1 --> 12,10
129,9 --> 129,90
有什麼想法嗎?
如何將所有數字轉換爲xx,xx十進制格式而不爆炸數字或字符串? like;十進制格式
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(',', '.', ...)
用於替換帶點的逗號。
$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>";
你必須確保你的值沒有超過兩位數字,但
如果您已經啓用了intl
擴展,最好的方法問題(IMO)在接受的答案是考慮到這樣一個問題:PHP: unformat money
您可以使用
例子:
$formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); var_dump($formatter->parseCurrency("75,25 €", $curr));
給出:
float(75.25)
注意,intl extension默認情況下不啓用。請 參考Installation Instructions。
之後,您將有一個浮點值和格式,這是使用number_format()
一個微不足道的問題。
如果你沒有這樣的擴展,在這個問題上檢查出的正則表達式的方法:What a quick way to clean up a monetary string
我做了一個作曲家包,可以處理這取決於貨幣您要顯示這樣的事情。
https://packagist.org/packages/votemike/money
如果你也進入該國將格式化本地方式幣(有或沒有逗號,並用正確的小數位數)
$money = new Money(99.50, 'JPY');
$money->format(); //¥100
所以,如果你只是創建一個新的貨幣對象,其中包含要顯示的金額和顯示的貨幣,調用該對象上的 - > format()應該爲您提供所需的結果。
http://php.net/manual/en/function.number-format.php – Rikesh
@Rikesh不會爲帶有逗號的值工作 –
http://php.net/sprintf ... – KingCrunch