Java double 相乘的小问题记录

来源:互联网 发布:演技知乎' 编辑:程序博客网 时间:2024/06/06 00:48
看下面的一段代码的运行结果:
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class TestDouble {  
  2.     public static void main(String[] args) {  
  3.      double d =538.8;     
  4.      System.out.println(d*100);  
  5. }  

输出结果很意外的不是 53880 而是53879.99999999999

解决方法一:

538.8*100  用*10*10 替换,才能得到我们想要的结果

解决方法二:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class TestDouble {  
  2.     public static void main(String[] args) {  
  3.      double d =538.8;      
  4.      BigDecimal a1 = new BigDecimal(Double.toString(d));  
  5.      BigDecimal b1 = new BigDecimal(Double.toString(100));   
  6.      BigDecimal result = a1.multiply(b1);// 相乘结果  
  7.      System.out.println(result);  
  8.      BigDecimal one = new BigDecimal("1");  
  9.      double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位数  
  10.      System.out.println(a);  
  11.     }  
  12. }  

0 0