黑马程序员技术交流社区
标题:
为什么double类型的两个小数2.3+3.4=5.699999999999999
[打印本页]
作者:
江南小道士
时间:
2013-11-29 16:58
标题:
为什么double类型的两个小数2.3+3.4=5.699999999999999
本帖最后由 江南小道士 于 2013-11-29 22:30 编辑
public static void main(String[] args)
{
double x = add(2.3,3.4);
System.out.println("x="+x);
}
public static double add(double a,double b)
{
return a+b;
}
运行结果—— x=5.699999999999999
为什么?为什么?哪位能解答一下吗?
作者:
HAnG
时间:
2013-11-29 17:10
要归咎于CPU表示浮点数的方法.举个例子:2.4的二进制表示并非就是精确的2.4,而是最为接近4.199999809265137;原因在于浮点数由两部分组成:指数和尾数,浮点数的值实际上是由cpu的某个数学公式计算得到的,所以您所遇到的精度损失会在任何操作系统和编程环境中遇到。
作者:
江南小道士
时间:
2013-11-29 17:24
HAnG 发表于 2013-11-29 17:10
要归咎于CPU表示浮点数的方法.举个例子:2.4的二进制表示并非就是精确的2.4,而是最为接近4.19999980926513 ...
谢谢,这部分好复杂,还没学到~~~
刚开始学习,只知道小数默认为double类型,double占八个八位~~~~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2