float/double 浮點數據*100精度丟失問題


工作中微信支付碰到的一個問題,金額是float數字,微信參數需要分且必須是整數,所以*100的時候就有問題了

System.out.println(9.9f*100); //989.99994
System.out.println(19.9f*100); //1990.0
實驗了好幾次,一位小數情況下只有9.9有問題,其他的貌似都可以,
為了避免9.9支付失敗,只能使用BigDecimal了
BigDecimal b = new BigDecimal("9.9");//必須使用字符串,不能使用浮點型數據
BigDecimal aa = b.multiply(new BigDecimal(100));
aa.floatValue()//獲取結果 990.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM