黑马程序员技术交流社区

标题: 关于double类型的问题 [打印本页]

作者: 倪大大    时间: 2014-5-10 22:39
标题: 关于double类型的问题
本帖最后由 倪大大 于 2014-5-12 21:09 编辑

double d =12.223 ;
        double f = d*100;
        System.out.println(f);
这个代码为什么输出的是 1222.30000000000002
不是应该输出 1222.30吗?
作者: abrahan    时间: 2014-5-10 23:10
float和double型,的底层实现是二进制的。十进制中的一个有限位数小数,转换成二进制就不一定是有限位数了,一旦位数超过的float和double型的位数宽度,就会出现“精度溢出”。所以float和double型是为了科学计算而设计的,并不适合精确的十进制计算.

就像一个十进制的小数,要不断地乘以2取整,但在这个过程中可能会一直循环下去,这就造成了数据的不精确。
作者: 倪大大    时间: 2014-5-12 21:08
abrahan 发表于 2014-5-10 23:10
float和double型,的底层实现是二进制的。十进制中的一个有限位数小数,转换成二进制就不一定是有限位数了 ...

多谢多谢 很清楚 谢谢了




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