gpt4 book ai didi

java - DecimalFormat 子模式边界不能正常工作

转载 作者:搜寻专家 更新时间:2023-10-31 19:41:42 24 4
gpt4 key购买 nike

我正在使用 DecimalFormat 创建一个长度始终为 6 个字符的格式化小数。起初我使用 new DecimalFormat("000.00") 的格式字符串,但这给了我一个负数错误。添加了减号并使第一个空格变大,导致 -005.25 而不是所需的 -05.25

我可以用下面的代码解决这个问题

DecimalFormat fmt;  
if(netAmt < 0){
fmt = new DecimalFormat("00.00");
}else{
fmt = new DecimalFormat("000.00");
}

System.out.println(fmt.format(netAmt));

但是 DecimalFormat 有 ; 字符来格式化负数与正数不同。我无法正确完成这项工作。据我了解,下面的代码应该像上面一样工作。

DecimalFormat fmt = new DecimalFormat("000.00;00.00");  

System.out.println(fmt.format(netAmt));

结果是 ; 之前的模式同时用于负数和正数,导致 -005.25 错误仍然存​​在。我究竟做错了什么?我是否误解了 ; 的用途?

最佳答案

我很确定第二个模式被忽略了,并且只使用了特定于否定的部分,例如- 符号或 () 等。

这是我阅读以下来自 JavaDocs 的段落的理解

A DecimalFormat pattern contains a positive and negative subpattern, for example, "#,##0.00;(#,##0.00)". Each subpattern has a prefix, numeric part, and suffix. The negative subpattern is optional; if absent, then the positive subpattern prefixed with the localized minus sign ('-' in most locales) is used as the negative subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00". If there is an explicit negative subpattern, it serves only to specify the negative prefix and suffix; the number of digits, minimal digits, and other characteristics are all the same as the positive pattern. That means that "#,##0.0#;(#)" produces precisely the same behavior as "#,##0.0#;(#,##0.0#)".

关于java - DecimalFormat 子模式边界不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5031405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com