问题描述
为什么是 33.333333333333336
解决方案
1、双精度浮点数在计算机表示1位符号位,52位小数位,11位指数位2、3.0他表示成1.1(2进制)*2(指数为1),整数位1可以舍去(按照IEEE标准)3、你可以查看下计算机组成原理相关知识(浮点数的运算),计算出来的不是精确的,跟位数有关系。
解决方案二:
你用的是double吧 你试试int就不一样啦
解决方案三:
试试自己转换为二进制算一下,计算机是用二进制计算的。
解决方案四:
如果你需要精确,可以采用:BigDecimal a = new BigDecimal(100);BigDecimal b = new BigDecimal(3);BigDecimal c = a.divide(b, 240, BigDecimal.ROUND_FLOOR);System.out.println(c.toString());240表示你要的精度值,也就是小数点的多少位。
解决方案五:
以有限的二进制去表示一个数就是这样子的.
解决方案六:
double只有15位有效数字(十进制)。最后两位36都不可靠。
时间: 2024-09-26 23:19:11