黑马程序员技术交流社区
标题:
关于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