簡體   English   中英

PHP number_format():四舍五入,然后格式化為貨幣

[英]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);

如文檔中所述, number_format 返回一個字符串值,您不能將其作為數字重用。 使用函數round()對您的數字進行四舍五入,如果要將其四舍五入為直接上整數,請改用ceil()

number_format(round(12345.6789), 2);

您正在尋找的 PHP 函數是 money_format() http://php.net/manual/en/function.money-format.php仔細閱讀手冊頁(包括評論)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM