java如何设置精度
设置浮点数精度
在Java中处理浮点数精度通常涉及BigDecimal类或格式化输出。BigDecimal提供高精度的十进制运算,适合财务等需要精确计算的场景。

使用BigDecimal设置精度:

import java.math.BigDecimal;
import java.math.RoundingMode;
BigDecimal number = new BigDecimal("3.1415926535");
BigDecimal rounded = number.setScale(2, RoundingMode.HALF_UP); // 保留2位小数
System.out.println(rounded); // 输出3.14
关键参数:
setScale(int precision, RoundingMode mode):precision指定小数位数,RoundingMode定义舍入规则(如HALF_UP四舍五入)。
格式化输出精度
通过DecimalFormat或String.format()控制显示精度:
import java.text.DecimalFormat;
double value = 3.1415926535;
DecimalFormat df = new DecimalFormat("#.##"); // 两位小数
System.out.println(df.format(value)); // 输出3.14
// 使用String.format
System.out.println(String.format("%.2f", value)); // 输出3.14
注意事项
- 创建
BigDecimal时推荐使用字符串构造器(如new BigDecimal("0.1")),直接传入double可能导致精度问题。 - 比较浮点数时应使用
BigDecimal.compareTo()而非equals(),后者会同时比较精度。 - 对于科学计算,
StrictMath类提供标准数学函数的高精度实现。






