[英]PHP number_format(): rounding numbers and then formatting as currency
我正在嘗試創建一個電子商務商店,我們的價格需要隨着不同國家/地區的匯率波動,所以我要處理很多小數位。
我想要做的是將原始價格四舍五入到最接近的完整數字(因為他們可以保留零錢)。 但是后來我想將其格式化為帶有兩位小數的貨幣。
<?php
$number = 12345.6789;
echo $number; // outputs '12345.6789'
$number = number_format($number,0);
echo $number; // outputs '12,346'
$number = number_format($number,2);
echo $number; // outputs '12.00'
?>
格式化為無小數位后,它開始讀取 ',' 作為小數分隔符而不是千位分隔符,並將其格式化為兩位小數。
它還給出了以下錯誤:
A non well formed numeric value encountered in C:\wamp64\www\Lifting365\test.php on line 6
我怎樣才能實現我正在尋找的東西?
// 應用 intval 來獲取低整數值(用於更改目的)
$number = 12345.6789;
echo $number; // outputs '12345.6789'
echo intval($number)."<br/>"; // outputs '12345'
echo number_format(intval($number),0,'.','.'); // outputs '12.345'
echo number_format(intval($number),0,'.',','); // outputs '12,345'
使用round
函數,然后使用number_format
。
// returns 12,346.00
number_format(round(12345.6789), 2);
函數number_format
接受 4 個參數。 默認情況下,一個點將用作十進制分隔符,逗號用作千位分隔符(12345.6789 在您第一次調用后變為 12,346;例外)。 它沒有明確記錄,但 number_format 也四舍五入。
http://php.net/manual/de/function.number-format.php
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
您收到錯誤,因為您重用了相同的變量$number
。 在您第一次調用number_format
之后,您不再有浮點值。
<?php
$number = 12345.6789;
echo $number."<br>"; // outputs 12345.6789
echo number_format($number,0)."<br>"; // outputs 12,346
echo number_format($number,2)."<br>"; // outputs 12,345.68
?>
如果您不確定變量中的內容,您可以對其應用floatval
。
echo number_format(floatval($number),2);
您正在尋找的 PHP 函數是 money_format() http://php.net/manual/en/function.money-format.php仔細閱讀手冊頁(包括評論)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.