Java Math.pow() 舍入误差

标签 java double

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

我有一个字符串 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");

See? It works!

关于Java Math.pow() 舍入误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319415/

相关文章:

java - 使用数组查找 2 个列表之间的最大数字

移动到新服务器后出现 Java.lang.NoClassDefFoundError

java - 使用 maven 为 spring-boot web 应用程序生成工作 war 文件

c# - 如何知道双字符串是否往返安全?

css - 双 CSS 属性,否则该属性将不起作用

c++ - double 值的精度错误

java - 一项一项检查 ResultSet 值

java - 以编程方式解析加密的 PKCS#8 编码的 pem 文件

java - 如何在jsp中根据可用性创建复选框?

c++ - 断言 double 可以放入 int