You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现金额向上取整至最近50美分的代码修改咨询

向上取整至最近50美分的PHP修改方案

嘿,刚好能帮你搞定这个需求!原代码用round()实现的是四舍五入到最近50美分,要改成向上取整的话,只需要把round()换成ceil()函数就行,原理很直观:

我们先把价格乘以2,这样50美分的单位就转换成了1美元的整数单位(比如3.2美元×2=6.4,对应6个1美元+40美分),然后用ceil()向上取整到最近的整数,最后再除以2还原回原单位,就能得到向上取整到50美分的结果了。

修改后的完整代码如下:

add_filter('australia_post_shipping_rate', 'shipping_round_up_to_nearest_50cents');
function shipping_round_up_to_nearest_50cents($price) {
    // 直接用ceil向上取整,不管是否为整数都能正确处理
    $payprice = ceil($price * 2) / 2;
    return $payprice;
}

效果示例:

  • 输入3.1美元 → 输出3.5美元
  • 输入3.6美元 → 输出4.0美元
  • 输入5美元 → 输出5美元
  • 输入2.5美元 → 输出2.5美元

另外提一句原代码里的is_int()判断:其实可以直接去掉,因为不管是整数(比如5)还是float类型的整数(比如5.0),用ceil($price * 2)/2计算出来的结果都是正确的,不会有问题。如果一定要保留整数直接返回的逻辑,留着也不影响最终效果。

内容的提问来源于stack exchange,提问作者user9353046

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:07:32