woocommerce优惠券四舍五入到小数点后1位

时间:2020-04-01 19:29:58

标签: woocommerce rounding

在我的商店中,我正在使用此代码对优惠券中的小数点进行四舍五入。 是否可以将数字从99.555舍入到99.9? 我只需要一个小数点。

/**
 * Round off decimals for coupons
 **/
function filter_woocommerce_coupon_get_discount_amount( $discount, $discounting_amount, $cart_item, $single, $instance ) { 
    $discount = ceil( $discount );
    return $discount; 
}   
add_filter( 'woocommerce_coupon_get_discount_amount', 'filter_woocommerce_coupon_get_discount_amount', 10, 5 );

1 个答案:

答案 0 :(得分:1)

您可以使用PHP round函数(而不是ceil),该函数具有一个$precision参数,您可以将其设置为1。这将舍入到9.555的壁橱精度为9.6

/**
* Round off decimals for coupons
**/

function filter_woocommerce_coupon_get_discount_amount( $discount, 
$discounting_amount, $cart_item, $single, $instance ) { 
    $discount = round( $discount, 1 );
    return $discount; 
} 

add_filter( 'woocommerce_coupon_get_discount_amount', 
'filter_woocommerce_coupon_get_discount_amount', 10, 5 );

如果要将9.555转换为9.9,则必须创建该逻辑,例如:

/**
* Round off decimals for coupons
**/

function filter_woocommerce_coupon_get_discount_amount( $discount, 
$discounting_amount, $cart_item, $single, $instance ) { 

    $disvount_floor = floor($discount);

    // This will return x.99 if $discount decimal number is > 0.5
    if (fmod($discount, $disvount_floor) > 0.5) {
        return "{$disvount_floor}.9";
    }

    return $discount; 

} 

add_filter( 'woocommerce_coupon_get_discount_amount', 
'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
相关问题