【问题标题】:java.lang.IllegalArgumentException decimal formatjava.lang.IllegalArgumentException 十进制格式
【发布时间】:2014-01-11 14:09:45
【问题描述】:

我想强制使用小数点后两位数的格式,但我的应用在登录时崩溃了。

Log.v("log", new DecimalFormat("00.00").format("62.42"));

【问题讨论】:

    标签: java android decimalformat


    【解决方案1】:

    你应该没问题。

    Log.v("log", new DecimalFormat("00.00").format(62.42));
    

    但是如果你认为你必须有String作为输入,那么先把它解析成Double,然后再进行操作:

    Log.v("log", new DecimalFormat("00.00").format(Double.parseDouble("62.42")));
    

    【讨论】:

      【解决方案2】:

      DecimalFormat 继承 Format#format(Object),后者委托给 DecimalFormat#format(Object, StringBuffer, FieldPosition)。这是实现为

      public final StringBuffer format(Object number,
                                       StringBuffer toAppendTo,
                                       FieldPosition pos) {
          if (number instanceof Long || number instanceof Integer ||
                     number instanceof Short || number instanceof Byte ||
                     number instanceof AtomicInteger ||
                     number instanceof AtomicLong ||
                     (number instanceof BigInteger &&
                      ((BigInteger)number).bitLength () < 64)) {
              return format(((Number)number).longValue(), toAppendTo, pos);
          } else if (number instanceof BigDecimal) {
              return format((BigDecimal)number, toAppendTo, pos);
          } else if (number instanceof BigInteger) {
              return format((BigInteger)number, toAppendTo, pos);
          } else if (number instanceof Number) {
              return format(((Number)number).doubleValue(), toAppendTo, pos);
          } else {
              throw new IllegalArgumentException("Cannot format given Object as a Number");
          }
      }
      

      所以你看,你不能传递 String 参数。

      字符串62.42 已经按照您想要的方式进行了格式化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        相关资源
        最近更新 更多