我的支付系统从每笔交易中收取0.5%。我的账户上有0.9美元,数额很小。当我试图通过API提取0.9美元时,会出现错误,费用为0.0045美元,四舍五入为0.91美元。所以我只能提取0.89美元并支付0.00445美元的费用,四舍五入到1美分即可清空我的账户;
我不明白附加费是用哪个公式四舍五入的=(
php round(0.9+0.9*0.005,2)
返回0.9$,如何获得0.91$?
编辑:ceil适用于这个特定的金额,但在实践中,当我只提取1美分时,佣金,即0.00005,不知何故不算作0.01,看起来除了ceil()之外,只包括点后的前两个零。hm.
ceil((0.01*0.005)*100)/100;给出1美分,但实际上api为零。
使用ceil
怎么样
$number = 0.9*0.005;
$number = ceil(100*$number) / 100; // rounds fee up to nearest cent
$number = $number + 0.9;
echo round($number,2);
不要在ceil函数内进行乘法运算!你会得到浮点错误,这可能是非常不可预测的。为了避免这种情况:
function ceiling($value, $precision = 0) {
$offset = 0.5;
if ($precision !== 0)
$offset /= pow(10, $precision);
return round($value + $offset, $precision, PHP_ROUND_HALF_DOWN);
}
例如,ceiling(2.2200001, 2)
将给出2.23
。