【问题标题】:how to output a double to 2 decmial places in a string?如何在字符串中输出双精度到小数点后两位?
【发布时间】:2013-12-09 06:09:02
【问题描述】:

这个程序使用 itemListener 进行温度转换

outputValue 是受保护的双精度对象

outputString 也受到保护

输出是一个JTextField

输出类型是受保护的字符

public void itemStateChanged(ItemEvent e) {
    inputValue =  Double.parseDouble(textField.getText());

    //the input value is converted to the outputValue based on the outputType

    outputString = String.valueOf(outputValue);            //set output value to string
    outputString = String.format(" %0.2f", outputValue);   //format to .00

    output.setText( outputString + (char) 0x00B0 + outputType);}

当我运行程序时,我得到:

Exception in thread "AWT-EventQueue-0" java.util.MissingFormatWidthException: 0.2f,

有一长串(未知来源)。

【问题讨论】:

    标签: java formatting decimal


    【解决方案1】:

    使用格式字符串%.2f:

    String.format(" %.2f", outputValue);
    

    【讨论】:

    • 知道是什么导致了异常吗?异常的名称说缺少格式宽度,但 OP 有 %0.2f 其中 2 是宽度,对吧?
    【解决方案2】:

    Glenn Lane 接受的回答回答了这个问题,如何正确地做到这一点。

    至于发生异常的原因,仔细搜索Formatter javadoc 可以发现0 标志:

    要求用前导零填充输出到 任何符号或基数指示符之后的最小字段宽度,除了 转换 NaN 或无穷大时。如果 未提供宽度,则 MissingFormatWidthException 将被抛出。

    所以,%0.2f 表示该数字应该用零填充到小数点前的 n 位(小数点后应显示 2 位数字)。但n 未指定。

    这就是为什么%0.2f 会抛出MissingFormatWidthException%.2f 不会。

    【讨论】:

      【解决方案3】:

      试试" %03.2f",第一个 0 只是一个标志,用前导零填充数字。它后面必须跟一个宽度规范。

      【讨论】:

      • 在 Java8 中,如果你不添加宽度规范,你会得到 java 错误 java.util.MissingFormatWidthException: %0.2f at java.util.Formatter$FormatSpecifier.checkNumeric(Formatter.java :3022) ....
      【解决方案4】:

      试试这个..

      String outputType = " celsius";
      DecimalFormat format = new DecimalFormat("###,###.##");
      output.setText( format.format(Double.parseDouble(textField.getText()))+ outputType);
      

      【讨论】:

        【解决方案5】:

        您好,您选择的格式似乎是错误的,正确的应该是

        outputString = String.format(" %.2f", outputValue); 
        

        【讨论】:

          猜你喜欢
          • 2011-08-08
          • 1970-01-01
          • 1970-01-01
          • 2010-12-07
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          • 2018-05-02
          相关资源
          最近更新 更多