java正则取数字保留小数点_如何用Java解决0.1+0.2≠0.3的问题(附带JS方法)
时间: 2024-02-09 16:13:29 浏览: 82
Java中浮点数运算存在精度问题,因此0.1+0.2可能不等于0.3。解决这个问题可以使用BigDecimal类来进行精确计算。
以下是使用BigDecimal类进行精确计算的示例代码:
```java
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
}
}
```
在上面的代码中,我们将0.1、0.2、0.3都转换成了BigDecimal类型,并使用add方法进行加法运算,然后使用equals方法判断两个数是否相等。
如果需要对一个字符串中的数字进行提取并保留小数点,可以使用正则表达式来匹配数字并使用DecimalFormat类进行格式化。
以下是使用正则表达式和DecimalFormat类进行格式化的示例代码:
```java
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String str = "12.3456789";
Pattern pattern = Pattern.compile("(\\d+\\.\\d+)");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String numStr = matcher.group(1);
DecimalFormat df = new DecimalFormat("#.00");
String formattedNum = df.format(Double.parseDouble(numStr));
System.out.println(formattedNum); // 输出12.35
}
}
}
```
在上面的代码中,我们使用正则表达式将字符串中的数字提取出来,然后使用DecimalFormat类进行格式化,保留两位小数点。最后输出格式化后的数字。
阅读全文