我想格式化一个没有任何前缀(或相同前缀)的数字,用于正数和负数。
NumberFormat的规范声明您可以为正数指定子模式,为负数指定子模式,用分号分隔。
每个子模式都有前缀,数字部分和后缀。否定的 子模式是可选的;如果没有,那么积极的子模式 使用前缀为局部减号(大多数语言环境中为“ - ”) 作为负子模式。也就是说,单独“0.00”相当于 “0.00; -0.00”。
只要正面和负面子模式具有不同的前缀或后缀,这都有效。如果它们相同,则默认为带有减号的默认行为。
我想要的是格式化:
我知道我可以使用Math.abs(),这在JSP / EL环境中并不那么容易,而且它是一个纯格式问题,所以应该在JSP中完成,但这根本不是重点。 我在文档中找不到有关该行为的任何提示。当我阅读上述内容时,我认为只要我指定任何负子模式,就会使用它。事实并非如此。
有人对此有所了解吗?我可能会向Oracle提交一个错误,但是如果我遗漏了某些内容,我想先检查一下。
答案 0 :(得分:1)
不确定您的格式应该是什么,但这似乎适用于您的示例:
DecimalFormat f = new DecimalFormat(":00");
f.setNegativePrefix(":");
System.out.println(f.format(1)); // :01
System.out.println(f.format(-1)); // :01
答案 1 :(得分:1)
假设你的wepapp中有JSTL,你可以使用以下内容:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<fmt:formatNumber pattern=":#" minIntegerDigits="2" value="${fn:replace('-1', '-', '')}" />
希望这有帮助...