java编程double相乘_浅谈Java double 相乘的结果偏差小问题
看下面的一段代碼的運行結(jié)果:
public class TestDouble {
public static void main(String[] args) {
double d =538.8;
System.out.println(d*100);
}
輸出結(jié)果很意外的不是 53880 而是53879.99999999999
解決方法一:
538.8*100 用*10*10 替換,才能得到我們想要的結(jié)果
538.8*10000 用 100*100替換。
解決方法二:
public class TestDouble {
public static void main(String[] args) {
double d =538.8;
BigDecimal a1 = new BigDecimal(Double.toString(d));
BigDecimal b1 = new BigDecimal(Double.toString(100));
BigDecimal result = a1.multiply(b1);// 相乘結(jié)果
System.out.println(result);
BigDecimal one = new BigDecimal("1");
double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位數(shù)
System.out.println(a);
}
}
以上這篇淺談Java double 相乘的結(jié)果偏差小問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持聚米學(xué)院。
總結(jié)
以上是生活随笔為你收集整理的java编程double相乘_浅谈Java double 相乘的结果偏差小问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样把java换主题_如何为Eclips
- 下一篇: java有any类型吗_Java开发网