支付交易中遇到浮点数精度的问题
程序员文章站
2022-07-14 08:41:04
...
1,案例
支付平台的单位是分,而业务系统的单位是元,所以传到支付系统时要乘以100
@Test public void test_divide2() { String payAmountStr="1011"; float f=Float.parseFloat(payAmountStr); float result=f/100f; System.out.println(String.valueOf(result*100)); }
运行结果:1010.99994
但是预期结果是:1011
2,解决方法:使用BigDecimal
@Test public void test_divide() { String payAmountStr="1011"; BigDecimal chanpayAcount=new BigDecimal(payAmountStr); BigDecimal bssAcount= chanpayAcount.divide(new BigDecimal(100)); System.out.println("使用BigDecimal"); System.out.println(String.valueOf(bssAcount.multiply(new BigDecimal(100)))); }
运行结果:
使用BigDecimal
1011.00
上一篇: java中double型数据四舍五入
下一篇: java基础---Math