黑马程序员技术交流社区

标题: 解决精度对视问题! [打印本页]

作者: SenGoo    时间: 2014-10-22 21:55
标题: 解决精度对视问题!
  1. public class Test
  2. {
  3.   public static void main(String[] args)
  4.   {
  5.   double x = 0.01;
  6.   double y = 0.09;
  7.   System.out.println(x + y);
  8.   }
  9. }
复制代码
输出结果是0.09999999999999999而不是0.1解决方法一:将x,y改为float
  1. public class Test
  2. {
  3.   public static void main(String[] args)
  4.   {
  5.           /*double x = 0.01;
  6.           double y = 0.09;*/
  7.           float  x = (float) 0.01;
  8.           float y = (float) 0.09;
  9.   System.out.println(x + y);
  10.   }
  11. }
复制代码
输出结果为:0.1
如果把x,y分别改为float的0.01和0.04,在相加,
  1. public class Test
  2. {
  3.   public static void main(String[] args)
  4.   {
  5.           /*double x = 0.01;
  6.           double y = 0.09;*/
  7.           float  x = (float) 0.01;
  8.           float y = (float) 0.04;
  9.   System.out.println(x + y);
  10.   }
  11. }
复制代码
结果居然是0.049999997


方法二:使用DecimalFormat
  1. import java.text.DecimalFormat;

  2. public class A
  3. {
  4.   public static void main(String[] args)
  5. {
  6.           float  a = (float) 0.01;
  7.           float b = (float) 0.04;
  8.   DecimalFormat df = new DecimalFormat("#0.00");
  9.   System.out.println(df.format(a+b));
  10.   }
  11. }
复制代码
输出结果:0.05,此方法无论是double类型还是float类型都适用!



作者: SenGoo    时间: 2014-10-22 21:56
不好意思!是精度丢失!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2