我遇到了(我怀疑是)舍入错误的问题。
我有一个字符串 0.686357E-01
,我正在尝试将其转换为 double 。我已经能够使用 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);
那么,如何避免舍入误差呢? (有一些方法可以解决这个问题,但如果可以的话,我想知道如何解决这个问题)
谢谢。
最佳答案
你不需要拆分它,Double.parseDouble
可以很好地处理这些类型的数字。
double number = Double.parseDouble("0.686357E-01");
关于Java Math.pow() 舍入误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319415/