You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:10:29