java 0.1 0.2_0.1+0.2结果却不等于0.3
时间: 2023-09-08 20:16:44 浏览: 197
这是因为在计算机中,浮点数的存储和运算存在精度误差。0.1 和 0.2 在计算机中以二进制形式存储时是无限循环小数,因此在运算时会出现精度误差,导致结果不等于 0.3。如果需要高精度计算,可以使用 BigDecimal 类型进行计算。例如:
```
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal c = new BigDecimal("0.3");
System.out.println(a.add(b).equals(c)); // true
}
}
```
这样就能得到正确的结果。
相关问题
java正则取数字保留小数点_如何用Java解决0.1+0.2≠0.3的问题(附带JS方法)
在Java中,可以使用BigDecimal类来解决0.1+0.2≠0.3的问题,因为浮点数的精度问题可能会导致计算结果不准确。以下是一个示例代码:
```
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal c = a.add(b);
System.out.println(c); // 输出 0.3
}
}
```
在上面的代码中,我们使用BigDecimal类来创建0.1和0.2的精确表示,并使用add方法将它们相加,得到了正确的结果0.3。
另外,如果你想要保留小数点,可以使用setScale方法。例如:
```
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal c = a.add(b).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(c); // 输出 0.30
}
}
```
在上面的代码中,我们在相加后使用setScale方法来设置保留2位小数,并使用BigDecimal.ROUND_HALF_UP来指定四舍五入的方式。
springboot中如何将字符串[0.1,0.2,0.3]转换成数组且数组内的值为浮点型
可以使用如下代码将字符串转换成浮点型数组:
```java
String str = "[0.1,0.2,0.3]";
String[] strArr = str.substring(1, str.length() - 1).split(",");
double[] arr = new double[strArr.length];
for (int i = 0; i < strArr.length; i++) {
arr[i] = Double.parseDouble(strArr[i]);
}
```
首先去掉字符串的中括号,然后使用逗号分隔符将字符串拆分成字符串数组,最后循环遍历字符串数组,将每个字符串转换成浮点型,并存入浮点型数组中。
阅读全文