微信支付元转分的正确姿势
生活随笔
收集整理的這篇文章主要介紹了
微信支付元转分的正确姿势
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.背景
近期做了一個涉及微信支付的項目,由于工期比較緊張,所以引用了一款GitHub上的第三方SDK,開發效率還是蠻高的。但是在使用的過程中,確實也遇到一些bug。此處分享一下元轉分的正確實現方式。
2.第三方SDK之前的遺漏版本
1.源代碼
public static Integer Yuan2Fen(Double yuan) {//(重點)Double直接轉BigDecimal丟失精度return new BigDecimal(yuan).movePointRight(2).intValue();}2.測試
public class YuanToFenTest {//錯誤的元轉分方式public static Integer WrongYuan2Fen(Double yuan) {//(重點)Double直接轉BigDecimal丟失精度return new BigDecimal(yuan).movePointRight(2).intValue();} public static void main(String[] args) {Double money = 0.03;BigDecimal bmoney = new BigDecimal(money);System.out.println("Double直接轉BigDecimal結果:"+bmoney);Integer wmoney = WrongYuan2Fen(money);System.out.println("錯誤的元轉分結果:"+wmoney);} }3.測試運行結果
Double直接轉BigDecimal結果:0.0299999999999999988897769753748434595763683319091796875 錯誤的元轉分結果:23.元轉分的正確姿勢
1.源代碼
public static Integer Yuan2Fen(Double yuan) {return new BigDecimal(String.valueOf(yuan)).movePointRight(2).intValue();}2.測試
public class YuanToFenTest {//正確的元轉分方式public static Integer CorrectYuan2Fen(Double yuan) {//(重點)Double直接轉BigDecimal丟失精度,此處需要將Double轉換為Stringreturn new BigDecimal(String.valueOf(yuan)).movePointRight(2).intValue();} public static void main(String[] args) {Double money = 0.03;Integer cmoney = CorrectYuan2Fen(money);System.out.println("正確的元轉分結果:"+cmoney);} }3.測試運行結果
正確的元轉分結果:34.另一種方式
將Double類型轉換為BigDecimal類型:
Double money=0.03; BigDecimal bmoney = BigDecimal.valueOf(money);總結
以上是生活随笔為你收集整理的微信支付元转分的正确姿势的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab 绘制扇形区域
- 下一篇: 原生实现点击li变颜色