我的付款系统每次交易需要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()之外只包含前两个零点。嗯..
ceil((0.01 * 0.005)* 100)/ 100;给出1美分,但实际上api为零。
答案 0 :(得分:5)
如何使用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);
答案 1 :(得分:0)
不要在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
。