Java 十进制模式

Java 十进制模式,java,decimalformat,Java,Decimalformat,“############################,##0.00”,这个模式的目的到底是什么?我相信它有两个目的 将数字分组,即用千位分隔符逗号 如果缺少十进制数,则在十进制数后附加两个零,将其转换为23.00 但是为什么小数点前有“0”而不是“#”?这个零的目的到底是什么? 谢谢你的帮助 public static String formatAmountUpToTwoDecimalNumber(String amount) { if(amount=

“############################,##0.00”
,这个模式的目的到底是什么?我相信它有两个目的

  • 将数字分组,即用千位分隔符逗号
  • 如果缺少十进制数,则在十进制数后附加两个零,将其转换为23.00
  • 但是为什么小数点前有
    “0”
    而不是
    “#”
    ?这个零的目的到底是什么? 谢谢你的帮助

    public static String formatAmountUpToTwoDecimalNumber(String amount)
        {       
            if(amount==null || "".equals(amount))
            {
                 return "";
            }  
            Double doubleAmount = Double.valueOf(amount);
            double myAmount = doubleAmount.doubleValue();
            NumberFormat f = new DecimalFormat("###,###,###,###,##0.00");
            String s = f.format(myAmount);
            return s;
        }
    
    发件人:


    因此,当没有数字时,
    #
    不会显示。前导的
    0
    表示小数点分隔符前至少有一个数字。

    #
    仅当数字不是前导的零时才会放入数字
    0
    将输入一个数字,即使它是尾随的零。如果您希望打印固定数量的数字,也可以在前面使用零。

    在dp之前使用零,0.23之类的小数字将显示为0.23。如果没有它,您将无法获得前导零,因此它仅显示为.23。如果你有像excel这样的电子表格,你也可以在那里查看。

    谢谢。我看了文档,但不太明白。我很困惑,零不应该是字面意义上的吗?正如文档中所解释的,零在格式字符串中使用时不应该是字面意义上的。“将至少有1个数字”,你想说如果小数点前没有数字,那么如果我通过。7,它将在添加前导零后返回0.70?+1,但请不要链接到文档。对于过时的JRE。URL已调整。谢谢安德鲁。我没有注意到。我只是用###########测试了一下。我得到了0.23,这很烦人,因为我不想让前导零代表我所做的doing@MikeB-我刚刚使用Excel 2003进行了检查,如果单元格格式为##########@DaveRiz,则前导零肯定会被删除。但这是javaquestion@MikeB-是的,我知道这一点,但同样的原则也适用于excel。我是一名java程序员,我使用excel作为工具来说明这一点。我相信java应该做excel正在做的事情,但在我看来并非如此。这个测试在java中失败了,:
    断言(新的十进制格式(“####.######”)。格式(0.23d)是(“.23”)
    
    Symbol  Location    Localized?  Meaning
    0       Number      Yes         Digit
    #       Number      Yes         Digit, zero shows as absent