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

如何在DecimalFormat中设置null值的格式化显示?

解决DecimalFormat处理null值显示"--"的问题

直接调用fmt.format(null)会触发NullPointerException,因为DecimalFormat本身不支持直接处理null输入,必须先做null判断再格式化,这里给两种实用方案:

方案一:封装工具方法

写一个专门的格式化方法,先判断输入是否为null,是则返回"--",否则用DecimalFormat处理:

import java.text.DecimalFormat;

public class PercentageFormatter {
    public static String format(Number value) {
        if (value == null) {
            return "--";
        }
        DecimalFormat fmt = new DecimalFormat("0.00%");
        return fmt.format(value);
    }

    public static void main(String[] args) {
        System.out.println(format(1.14));   // 输出:114.00%
        System.out.println(format(0.1201)); // 输出:12.01%
        System.out.println(format(null));   // 输出:--
    }
}

方案二:用Java 8+的Optional简化处理

如果不想单独写方法,可以借助Optional的链式调用快速处理:

import java.text.DecimalFormat;
import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        DecimalFormat fmt = new DecimalFormat("0.00%");
        
        System.out.println(fmt.format(1.14));   // 114.00%
        System.out.println(fmt.format(0.1201)); // 12.01%
        // 处理null值
        System.out.println(Optional.ofNullable(null).map(fmt::format).orElse("--")); // --
    }
}

核心逻辑都是先拦截null值,避免直接把null传给DecimalFormat的format方法——该方法不接受null参数,否则会抛出空指针异常。

内容的提问来源于stack exchange,提问作者Joe DiNottra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:50:23