问题描述
我在做一个计算器程序,里面要用到小数计算,就会出现类似1-0.2=0.80000001的问题跪求如何解决
解决方案
解决方案二:
classBigDecimal可破
解决方案三:
引用1楼kiyoki的回复:
classBigDecimal可破
我想让1-0.2=0.8这做到了吗我不是嫌他精确度低,而是嫌他精确度太高了
解决方案四:
doubleaa=1;doublebb=0.2;System.out.println(Double.parseDouble(newBigDecimal(String.valueOf(aa)).subtract(newBigDecimal(String.valueOf(bb))).toString()));
解决方案五:
引用2楼u013596294的回复:
Quote: 引用1楼kiyoki的回复:
classBigDecimal可破我想让1-0.2=0.8这做到了吗我不是嫌他精确度低,而是嫌他精确度太高了
BigDecimal可以做到的
解决方案六:
浮点类型等得用专门的数据类型。
解决方案七:
浮点数就这养,根据你自己的需要保留几位小数就行了
解决方案八:
这样直接加减容易有误差的推荐用BigDecimalnewBigDecimal("1").subtract(newBigDecimal("0.2")).doubleValue()
解决方案九:
这个问题不光java语言存在,其它语言也存在,用BigDecimal处理。
解决方案十:
引用4楼aaron_gzt的回复:
Quote: 引用2楼u013596294的回复:
Quote: 引用1楼kiyoki的回复:
classBigDecimal可破我想让1-0.2=0.8这做到了吗我不是嫌他精确度低,而是嫌他精确度太高了
BigDecimal可以做到的
谢谢的确解决了但是还想问您一个问题就是bigdecimal遇到1/3这样的就处理不了啊····怎么办
解决方案十一:
引用3楼ghostkngiht的回复:
doubleaa=1;doublebb=0.2;System.out.println(Double.parseDouble(newBigDecimal(String.valueOf(aa)).subtract(newBigDecimal(String.valueOf(bb))).toString()));
赞一个学习了
时间: 2024-08-20 05:43:12