如何在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
相关产品推荐
相关产品推荐

