Java中如何减少double类型数值的小数位数?
实现Double值保留四位小数的简便方法
针对你需要将Double myLongNumber = 50.12345678998658576546转换为50.1234的需求,这里提供几种Java环境下的简便实现方式:
方法一:使用DecimalFormat类
这是Java中专门用于数字格式化的工具类,能精确控制小数位数,默认采用四舍五入规则:
import java.text.DecimalFormat; import java.math.RoundingMode; public class Main { public static void main(String[] args) { Double myLongNumber = 50.12345678998658576546; DecimalFormat df = new DecimalFormat("#.####"); // 若需强制保留四位小数(如50显示为50.0000),可改用格式"0.0000" Double formattedNumber = Double.valueOf(df.format(myLongNumber)); System.out.println(formattedNumber); // 输出50.1234 // 如需截断小数而非四舍五入,可设置舍入模式 df.setRoundingMode(RoundingMode.DOWN); Double truncatedNumber = Double.valueOf(df.format(myLongNumber)); System.out.println(truncatedNumber); // 同样输出50.1234(此例中两种方式结果一致) } }
方法二:使用String.format格式化
这种方式更简洁,无需额外导入类,默认遵循四舍五入:
Double myLongNumber = 50.12345678998658576546; String formattedStr = String.format("%.4f", myLongNumber); Double formattedNumber = Double.valueOf(formattedStr); System.out.println(formattedNumber); // 输出50.1234
方法三:数学计算方式
通过手动运算控制小数位数,利用Math.round实现四舍五入:
Double myLongNumber = 50.12345678998658576546; Double formattedNumber = Math.round(myLongNumber * 10000) / 10000.0; System.out.println(formattedNumber); // 输出50.1234 // 如需截断小数,用强制类型转换替代Math.round Double truncatedNumber = (double)((int)(myLongNumber * 10000)) / 10000.0; System.out.println(truncatedNumber); // 输出50.1234
内容的提问来源于stack exchange,提问作者lLauriix
相关产品推荐
相关产品推荐

