如何在没有千位分隔符和舍入函数的情况下使用number_format

时间:2013-06-29 00:18:52

标签: php rounding separator number-formatting

我对如何一起使用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

你能帮助我吗?

2 个答案:

答案 0 :(得分:3)

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

echo $price;

这应该有效

答案 1 :(得分:2)

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

示例案例:

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