2

我对如何同时使用 number_format 和 round 函数有疑问,这是因为我有一个脚本可以导入所有供应商的产品,但我需要对价格进行四舍五入,例如:

供应商的价格:1854.81 美元四舍五入的价格:1854.99 美元(这是我想要的格式)我的脚本打印的价格:1,854.90 美元

我尝试了 3 PHP 变体来做到这一点:

变体 #1:

$preciosinr = 1854.81;
echo number_format(round($preciosinr*4)/4,2); //Print 1,854.90

变体 #2

$preciosinr = 1854.81;
$pos = 3 - floor(log10($preciosinr));
echo number_format(round($preciosinr,$pos)-0.10,2); //Print 1,854.75

变体 #3

$preciosinr = 1854.81;
number_format($preciosinr,2);
number_format(round($preciosinr,1),2);
number_format(round($preciosinr,0),2);
echo number_format(round($preciosinr,0)-0.01,2); //Print 1,854.99

正如您所看到的,所有变体都使用“,”打印价格,而我需要没有这个的价格,因为我的系统错误地检测到价格。

我在 php.net 中读到我需要使用以下 sintaxis,但我不知道如何与我的代码集成。

// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57

你能帮助我吗?

4

2 回答 2

4
$price=number_format(round($preciosinr,0)-0.01,2,'.','');

echo $price;

这应该工作

于 2013-06-29T00:35:30.030 回答
3

我觉得奇怪的是,被接受的答案实际上是错误的。

示例案例:

// The input we want to check
$stringNumber = '7616.95';

// As suggested by accepted answer
$formatted = number_format(round($stringNumber,0)-0.01,2,'.','' );

echo $formatted; // Outputs: 7616.99

在这里可以找到更好的解决方案: https ://stackoverflow.com/a/7459107

于 2015-08-14T11:38:56.283 回答