PHP number_format():舍入数字然后格式化为货币

时间:2018-05-08 17:26:47

标签: php number-formatting

我正在尝试创建一个电子商务商店,我们的价格需要随着不同国家的汇率而波动,所以我要处理很多小数位。

我想要做的是将原始价格四舍五入到最接近的完整数字(因为他们可以保留更改)。但后来我想将其格式化为两位小数的货币。

nonce

格式化为无小数位后,它开始读取','作为小数分隔符而不是千位分隔符,并格式化两位小数。

它还会出现以下错误:

<?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'
?>

我将非常感谢您对如何实现我正在寻找的任何帮助或建议。

5 个答案:

答案 0 :(得分:0)

// apply 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'

答案 1 :(得分:0)

使用round功能,然后使用number_format

// returns 12,346.00
number_format(round(12345.6789), 2);

答案 2 :(得分:0)

函数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);

答案 3 :(得分:0)

如文档中所指定,number_format返回一个字符串值,您不能将其重用为数字。 使用函数round()来舍入您的数字,如果您想将其四舍五入到使用ceil()的直接上整数。

number_format(round(12345.6789), 2);

答案 4 :(得分:0)

您正在寻找的PHP函数是money_format()http://php.net/manual/en/function.money-format.php通过手册页阅读(包括评论)