天天看點

開發問題:微信支付金額精度丢失

場景

之前在做微信支付的時候,踩過一個坑:微信支付出現使用者支付金額比訂單金額少的問題。

就着這個問題上網查了一下,發現是訂單金額計算後精度丢失。

微信訂單金額需要是以分機關傳給微信支付金額的,需要對訂單金額*100計算,在這個計算過程中,出現的精度丢失問題,就照成了實際支付的金額比訂單金額少一分錢。

開發問題:微信支付金額精度丢失

解決方案:

在對傳給微信的支付金額,進行先乘1000在除10操作,這樣就會避免金額計算之後精度丢失問題。

// 調用支付接口
 double price = Double.parseDouble(mallOrderPay.getOrderAmount() + "");
 // 微信支付以分為機關,這裡為了避免計算之後精度丢失問題,先乘1000再除10
 price = price * 1000 / 10;
           

最後說一下支付寶這邊,因為支付寶是傳入實際金額,不需要進行計算,是以沒有這個問題。