列如:9.6*9理应得到86.4结果是86.399999999999我知道好像是因为有些小数在计算机中的表示不是准确值,所以会出现这种情况。但是我想得到86.4这样的结果,因为算出来的数不确定有几位小数,所以也不好设double小数点后的位数,求大神解答疑惑。
2 回答

慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
继续推荐我的博客:代码之谜(四)-浮点数(从惊讶到思考)代码之谜(五)-浮点数(谁偷了你的精度?)所以,使用BigDecimal类。对于@besto的回答。看过JDK文档和源码的都应该知道Double.toString(9.6)有很大的安全隐患。因为浮点数9.6本来就不是精确的。正确的写法:BigDecimala=newBigDecimal("9.6"));BigDecimalb=newBigDecimal("9"));System.out.println(""+a.multiply(b));
添加回答
举报
0/150
提交
取消