我对如何一起使用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
你能帮助我吗?
答案 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