使用 '%' 将字符串转换为双精度

Posted

技术标签:

【中文标题】使用 \'%\' 将字符串转换为双精度【英文标题】: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 是一个数字。它不能持有百分号。 【参考方案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);

【讨论】:

以上是关于使用 '%' 将字符串转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章

使用逗号时将字符串转换为双精度

将字符串转换为双精度 [重复]

将字符串转换为双精度的最佳方法

麻烦:将字符串转换为双精度

C++ 将字符串转换为双精度

将字符串从.csv文件转换为双精度数