在PHP中舍入和格式化钱

时间:2014-10-13 05:29:58

标签: php

我正在处理一个处理计算金额的脚本,我想知道这样做的正确或建议的方法是什么。

我正在处理美元和美分,而不是美分。我看过帖子such as this,它们给出了需要分数的场景,比如股票。我不认为我需要那么精确,但在我解雇之前我想要一些建议。

假设我以9.99美元的价格出售物品,税率为6.5%。

$item_cost = 9.99;
$tax_percent = 0.0650; //6.5%
$tax = $item_cost * $tax_percent;
//tax is 0.38935
$total = $item_cost + $tax; 
//total is 6.37935

我无法向用户收取$ 6.37935。我只是处理美元和美分。示例续...

$total = 4.401433
$rounded_total = round($total,2);
echo $rounded_total;
//rounded total is 4.4

虽然我知道4.4美元与4.40美元相同,但我无法通过我的支付处理器运行。是否“安全”首先舍入到2位小数,然后将数字格式应用到2位小数?

$total = 4.401433
$rounded_total = round($total,2);
$formatted_total = number_format($rounded_total,2,'.','');
echo $formatted_total;
//rounded and formatted total is 4.40

通过首先舍入到2位小数然后使用数字格式确定舍入数字确实是2位小数来确定应付金额是否“可接受”?

1 个答案:

答案 0 :(得分:2)

请勿使用number_format确定小数位。 而是首先围绕它。 Round是一种数学函数,与业务运作方式密切相关。例如,如果您有一个业务规则,说明丢弃2位小数后的任何内容,请先将其舍入为2位小数。 数字格式仅用于显示目的。例如,添加逗号,并在需要时添加前导0。 实际保存图形时,请确保根据业务需要对其进行舍入,然后保存在DB中(作为最终图)

相关问题