java 小数点字符串相减,不丢失精度
时间: 2024-01-23 22:21:16 浏览: 68
Java 中可以使用 BigDecimal 类来进行高精度的小数点运算,可以避免在浮点数运算中出现精度丢失的问题。具体实现可以采用以下步骤:
1. 将小数点字符串转换为 BigDecimal 对象。
2. 使用 BigDecimal 的 subtract 方法进行减法运算。
3. 使用 BigDecimal 的 setScale 方法设置小数点后面的位数。
4. 使用 BigDecimal 的 toString 方法将结果转换为字符串。
代码示例:
```java
import java.math.BigDecimal;
public class BigDecimalSubtraction {
public static String subFloatString(String str1, String str2, int scale) {
BigDecimal num1 = new BigDecimal(str1);
BigDecimal num2 = new BigDecimal(str2);
BigDecimal diff = num1.subtract(num2);
diff = diff.setScale(scale, BigDecimal.ROUND_HALF_UP);
return diff.toString();
}
public static void main(String[] args) {
String str1 = "123.456";
String str2 = "78.9";
String result = subFloatString(str1, str2, 3);
System.out.println(result);
}
}
```
这个程序会输出 "44.556",保证了精度不丢失。其中,setScale 方法的第二个参数表示舍入模式,ROUND_HALF_UP 表示四舍五入。
阅读全文