Java 在舍入数字方面有问题

Java 在舍入数字方面有问题,java,Java,我得到1.06664794E8我能做些什么才能得到答案作为样本?除非我的公式有错误,否则我应该得到一个正确的答案。我使用的是Math.ceil(),它可能不是我真正想要的,我需要四舍五入到3位小数 输出: double val = 1.06664794E8; BigDecimal bigDecimal = new BigDecimal(val); System.out.println(bigDecimal); 使用BigDecimal和setScale() 输出:将刻度改为3,四舍五入为106

我得到1.06664794E8我能做些什么才能得到答案作为样本?除非我的公式有错误,否则我应该得到一个正确的答案。我使用的是Math.ceil(),它可能不是我真正想要的,我需要四舍五入到3位小数

输出:

double val = 1.06664794E8;
BigDecimal bigDecimal = new BigDecimal(val);
System.out.println(bigDecimal);

使用BigDecimal和setScale()


输出:将刻度改为3,四舍五入为106664794.000

哦,我明白了,我花了几个小时解决这个问题。我不知道为什么我会得到这么大的数字。我需要得到117863.342作为我的答案
double val = 1.06664794E8;
BigDecimal bigDecimal = new BigDecimal(val);
System.out.println(bigDecimal);
106664794
    BigDecimal   bg1 = new BigDecimal("1.06664794E8");
    // set scale of bg1 to 3 and using CEILING as rounding mode
    bg1 = bg1.setScale(3, RoundingMode.CEILING);
    System.out.println("After changing the scale to 3 and rounding is "+bg1);