【问题标题】:convert String to double with '%'使用 '%' 将字符串转换为双精度
【发布时间】:2015-10-02 15:56:15
【问题描述】:

我有一个像“1.22%”这样的字符串值。我想将其转换为双精度值。 Douboe.parseDouble 抛出 numberFormatException。

String s = "1.22%";
 double iRate;

iRate = Double.parseDouble(s);

【问题讨论】:

  • 您需要使用像 replace(...) 这样的字符串操作来删除 % 符号,然后使用 Double.parseDouble() 将其转换为双精度。
  • double 是一个数字。它不能持有百分号。

标签: java number-formatting


【解决方案1】:

单行使用DecimalFormat:

double d = new DecimalFormat("0.0#%").parse("1.22%").doubleValue(); 
// d = 0.0122

【讨论】:

    【解决方案2】:

    您想使用类似于以下的方法:

    public static double ConvertPercentageStringToDouble(this string value)
    {
       return double.Parse(value.Replace("%","")) / 100;
    }
    

    【讨论】:

      【解决方案3】:

      假设您有标准格式。你可以试试

      String s = "1.22%";
      s = s.replaceAll("%","");
      double iRate= Double.parseDouble(s);
      

      【讨论】:

        【解决方案4】:

        更好的方法是使用 DecimalFormatSymbols,它可以帮助您定义什么是符号,什么是真正的数字以转换为 Double。

        请看下面的例子:

            String s = "1.22%";
        
            DecimalFormat df = new DecimalFormat();
            DecimalFormatSymbols symbols = new DecimalFormatSymbols();
            symbols.setDecimalSeparator('.');
            symbols.setGroupingSeparator(' ');
            symbols.setPercent('%');
            df.setDecimalFormatSymbols(symbols);
            Number parse = df.parse(s);
        
            Double myDouble = parse.doubleValue();
        
            System.out.println(myDouble);
        

        【讨论】:

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