小编典典

Java Math.pow()舍入错误

java

我遇到了(我怀疑是)舍入错误。

我有一个字符串,0.686357E-01我正尝试将其转换为双精度型。我已经可以使用Pattern.split()函数将其拆分,并且可以很好地捕获基数和指数值。但是,一旦我尝试将它们适当地相乘,就会得到以下结果:0.06863570000000001

这是我的相关代码:

pattern = Pattern.compile("E\\+?");
String[] number = pattern.split(string);

double base = Double.parseDouble(number[0]);
int exponent = Integer.parseInt(number[1]);

number= base*Math.pow(10, exponent);

那么,如何避免舍入错误?(我有多种方法可以解决此问题,但如果有可能,那么我想知道如何解决该问题)

谢谢。


阅读 223

收藏
2020-11-26

共1个答案

小编典典

您不需要拆分它,Double.parseDouble可以很好地处理这些数字。

double number = Double.parseDouble("0.686357E-01");

看到?有用!

2020-11-26