我们都看到商店的产品定价很好; “1.99”,“209.90”等等。
如果您手动输入价格,这也很容易做到,但是我们会说我们会有一个存储价格的数据库,每天根据货币变化进行更新。 因此,价格会自动计算出来,最终看起来像“1547,83”,这对眼睛来说并不好看。
如何在PHP中创建一个函数,既可以根据奖金的大小对价格进行四舍五入并根据设定的公差将其调整为“可呈现”?
非常感谢!
答案 0 :(得分:6)
money_format()或number_format() 后者通常更好 - 尽管名称 - 为货币值
修改强>
根据Pekka的评论,number_format()和round()的组合可能会给你想要的东西:
$value = 1547.83;
echo number_format($value,2),'<br />';
echo number_format(round($value,1),2),'<br />';
echo number_format(round($value,0),2),'<br />';
echo number_format(round($value,0)-0.01,2),'<br />';
echo number_format(round($value,-1),2),'<br />';
给出
1,547.83
1,547.80
1,548.00
1,547.99
1,550.00
编辑2
略微更加迷恋,根据实际值确定舍入级别:
$value = 1547.83;
$pos = 3 - floor(log10($value));
echo number_format(round($value,$pos)-0.01,2),'<br />';
// gives 1,547.99
$value = 1547982.83;
$pos = 3 - floor(log10($value));
echo number_format(round($value,$pos)-0.01,2),'<br />';
// gives 1,547,999.99
答案 1 :(得分:1)
这取决于一些规则。你想要向上或向下舍入吗?如果价格是1.93,你想成为1,95或1,90或1,99?
我认为你只想要分数而不是整个价格。
首先,定义应该进行哪些舍入,对我来说有意义的是:
一旦定义了这些规则,它就只是一个(数字)转换。这不是一个编程挑战,你应该只定义舍入规则。
答案 2 :(得分:0)
我们是否真的认为1.90和3.99是用户友好。
这太吓人了。 用户友好等效值为2.00或4.00。 .99结尾是一个推销员技巧,使用户误判价格。
1.99绝对不会像你所说的那样“对眼睛好看”。
修改强>
如果你愿意,可以为推销员做好事,你可以做一些可怕的事情:
$newprice = ceil($original_price) - 0.01;