java中的double问题
发布网友
发布时间:2022-05-01 12:47
我来回答
共3个回答
热心网友
时间:2023-10-13 04:06
看看计算机基础吧
用double计算会造成精度丢失的,而float不会出现这种情况的原因是由于它在计算机种的表示
方式是科学表示法。
如果不懂科学表示法,可以去google搜索下。
一般解决double出现精度问题的方法,是使用BigDecimal来代替Double计算,银行系统的数据计算都是采用BigDecimal。
如果不知道BigDecimal可以goole一下,了解一下
我只告诉了你的解决方法,具体怎么解决你自己看着办,通过解决这些问题,可以提高你解决问题的能力以及你对搜索引擎的使用。这些能力是技术人员必须的
热心网友
时间:2023-10-13 04:06
double精度是在他的范围内无限接近,如:
System.out.println((9.9-n)>1e-14);
System.out.println((9.9-n)>1e-15);
打印结果:
false
true
就是说可以精确到小数点后14位,因此在遇到此类问题时候不能用==而是和小数点几位比较,
你也可以
DecimalFormat format = new DecimalFormat("0.00");
n = Double.valueOf(format.format(i));
System.out.println(n);
这样格式化
热心网友
时间:2023-10-13 04:06
这个应该属于一个特例。。。3.3 分别 *2 *7 *8 *9 都会出现这种情况 不能用常理考虑,你可也当做他是BUG