当数字为零(0)时是否可以显示空白(空字符串)? (严格的左边没有零点)java.text.DecimalFormat在零时为空?
回答
您可以使用MessageFormat
,特别是其ChoiceFormat
特点:
double[] nums = {
-876.123, -0.1, 0, +.5, 100, 123.45678,
};
for (double num : nums) {
System.out.println(
num + " " +
MessageFormat.format(
"{0,choice,-1#negative|0#zero|0<{0,number,'#,#0.000'}}", num
)
);
}
此打印:
-876.123 negative
-0.1 negative
0.0 zero
0.5 0.500
100.0 1,00.000
123.45678 1,23.457
注意MessageFormat
不使用DecimalFormat
下引擎盖。从the documentation:
FORMAT TYPE: number
FORMAT STYLE: subformatPattern
SUBFORMAT CREATED: new DecimalFormat(
subformatPattern,
DecimalFormatSymbols.getInstance(getLocale())
)
所以这并使用DecimalFormat
,尽管是间接的。如果由于某种原因而被禁止,那么您必须自己检查一下特殊情况,因为DecimalFormat
不能区分零。从the documentation:
DecimalFormat
模式的语法如下:Pattern: PositivePattern PositivePattern ; NegativePattern
没有选项以零提供一个特殊的模式,所以没有DecimalFormat
模式,可以为你做这个。如上所示,您可以拥有if
,或者让MessageFormat/ChoiceFormat
为您做。
我真的需要使用java.text.DecimalFormat – Eduardo 2010-06-09 06:41:54
可以使用的String.format方法:
int num1=0;
int num2=33;
string str1 = (num1!=0) ? String.format("%3d", num1) : " ";
string str2 = (num2!=0) ? String.format("%3d", num2) : " ";
System.out.println("("+str1+")"); // output: ( )
System.out.println("("+str2+")"); // output: (33)
格式的语法非常类似于C的printf(这个基本的使用)
Er,它会将0打印为“0”,而不是空字符串。 – 2012-10-02 17:29:23
你是对的,这个答案是针对不同的问题... 我会做一些改变,以适应这一个以及:) – 2012-10-05 20:10:39
- 1. dplyr每小时和空时为零
- 2. ORACLE显示计数为零,当列为空时为空
- 3. 空值为零mysql
- 4. numpy数组为零或空
- 5. MySQL从零空间变为非空
- 6. dataWithContentsOfURL当URL为空时返回值不为零
- 7. java.text.DecimalFormat中相当于目标C
- 8. string.Format()空白零
- 9. 为什么打印空字符串时,零弹出?
- 10. 空和零作为字符串
- 11. JsonTextWriter序列化空为“零”用的ToString()
- 12. Apache Kylin - 空值测量变为零?
- 13. 应用见解 - 清空为零
- 14. 将SSRS中的空白替换为零
- 15. Rails的检查存储为空或零
- 16. 停止将空白处理为零
- 17. 在转换为int之前将空字段转换为零?
- 18. 在解析Swift中的JSON时为零
- 19. `[[NSBundle mainBundle] bundleIdentifier]`在运行XCTest时为零
- 20. 结构在展开时发现为零
- 21. 为什么我在倍增时变零?
- 22. SCNScene在使用`named加载时为零:`
- 23. 时间差为零秒
- 24. loaderInfo.bytesTotal为零时怎么办
- 25. mysql零和空值
- 26. 空X零问题
- 27. 如果字段在创建/更新而不是NULL时留空,则为零
- 28. 设置文本框为零时,其他文本框为空或用户输入零
- 29. 将空字符串作为NULL和零作为零插入浮动列
- 30. 在elisp中将零更改为零
采用哪种方法?在DecimalFormat中有很多格式化字符串的方法 – TheLQ 2010-06-08 23:10:53
数字是任何'java.lang.Number'还是一个特定的子类? – trashgod 2010-06-09 02:34:53
@ Lord.Quackstar任何方法,让我知道,如果任何方法会做。 @trashgod它是一个java.lang.Number,但如果它解决了我的问题,我可以使用特定的子类。 – Eduardo 2010-06-09 06:32:33