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

WooCommerce:如何在结账时将价格四舍五入到两位小数

WooCommerce 强制购物车/结账环节按两位小数计算价格

WooCommerce默认采用四位小数进行后台价格计算,即便前台显示两位小数,多件商品累加后导入会计软件时仍会出现0.01的金额差异。以下代码可直接添加到主题的functions.php文件(推荐用子主题,避免主题更新丢失代码),强制购物车、结账及订单生成环节的价格计算均四舍五入到两位小数:

// 强制购物车商品价格四舍五入到两位小数
add_filter( 'woocommerce_get_price', 'round_product_price_to_two_decimals', 10, 2 );
function round_product_price_to_two_decimals( $price, $product ) {
    return round( $price, 2 );
}

// 强制购物车项小计四舍五入到两位小数
add_filter( 'woocommerce_cart_item_subtotal', 'round_cart_item_subtotal', 10, 3 );
function round_cart_item_subtotal( $subtotal, $cart_item, $cart_item_key ) {
    $price = round( $cart_item['data']->get_price(), 2 );
    $subtotal = $price * $cart_item['quantity'];
    return wc_price( round( $subtotal, 2 ) );
}

// 强制购物车总计四舍五入到两位小数
add_filter( 'woocommerce_calculated_total', 'round_cart_total_to_two_decimals', 10, 2 );
function round_cart_total_to_two_decimals( $total, $cart ) {
    return round( $total, 2 );
}

// 强制订单行项目金额四舍五入到两位小数
add_action( 'woocommerce_checkout_create_order_line_item', 'round_order_line_item_amount', 10, 4 );
function round_order_line_item_amount( $item, $cart_item_key, $values, $order ) {
    $item->set_subtotal( round( $item->get_subtotal(), 2 ) );
    $item->set_total( round( $item->get_total(), 2 ) );
}

代码说明

  • woocommerce_get_price:修改单个商品的基础价格为两位小数
  • woocommerce_cart_item_subtotal:重新计算购物车中每个商品项的小计,确保是两位小数的价格乘以数量后再四舍五入
  • woocommerce_calculated_total:对购物车的最终总计进行两位小数的四舍五入
  • woocommerce_checkout_create_order_line_item:在生成订单时,强制行项目的金额为两位小数,避免订单导出时出现差异

注意事项

  1. 操作前务必备份functions.php文件,避免代码错误导致网站故障
  2. 优先使用子主题的functions.php,主题更新不会覆盖自定义代码
  3. 测试多种场景:多件商品购买、使用优惠券、添加税费等,确保金额计算准确且无差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:52:08