黑马程序员技术交流社区

标题: 大家帮我看看这是为什么啊? [打印本页]

作者: NO?    时间: 2014-3-28 22:24
标题: 大家帮我看看这是为什么啊?
  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 double a=23.33;
  6.                 double b=23;
  7.                 System.out.println("(a-b)= "+(a-b));
  8.                 //输出的结果居然不是0.33
  9.                //而是a-b = 0.3299999999999983

  10.         }
  11. }
复制代码

作者: liushui12344    时间: 2014-3-28 22:40
这个很正常,因为double型的有效位为16-17位,你写的代码没有错误.
作者: ╰青青子佩ˊゝ    时间: 2014-3-28 23:12
这个问题今天才发现,我也想问为什么?
作者: NO?    时间: 2014-3-29 01:04
╰青青子佩ˊゝ 发表于 2014-3-28 23:12
这个问题今天才发现,我也想问为什么?

答案我另一个帖子里有。你去看看
作者: NO?    时间: 2014-3-29 01:05
liushui12344 发表于 2014-3-28 22:40
这个很正常,因为double型的有效位为16-17位,你写的代码没有错误.

谢谢查看
作者: 小周务商    时间: 2014-3-29 08:42
定义变量的时候。double b=23;这句应该是23.0吧?
作者: 汗血黑马    时间: 2014-3-30 22:05
同意四楼说法,你的类型定义不对,应该会损失精度的。




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