Android-如何正确地将字符串解析为浮点(价格数字格式:整数、小数或两者兼有)

Android-如何正确地将字符串解析为浮点(价格数字格式:整数、小数或两者兼有),android,floating-point,number-formatting,decimalformat,Android,Floating Point,Number Formatting,Decimalformat,我试图解析来自用户的输入字符串并将其转换为浮点 String[] inputs = { "100", "100.0", "100.00", "100.00000", "100.1", "100.10", "100.11", "100.111", "1.0", "0.1",

我试图解析来自用户的输入字符串并将其转换为浮点

String[] inputs = {
      "100",
            "100.0",
            "100.00",
            "100.00000",
            "100.1",
            "100.10",
            "100.11",
            "100.111",
            "1.0",
            "0.1",
            "0.10",
            "0.1000",
            "0.111",
            "100,00",
            "1,000.15"
    };

    for (String input : inputs) {
        try {
            input = input.replace(",", ".");
            Float value = Float.valueOf(input);

            if (value == 0F) {
                Log.d("APP", "--> NOPE: " + value);
                continue;
            }

            String oldInput = input;

            DecimalFormat dc = new DecimalFormat(value > 1F ? "#.00" : "#0.00");
            input = dc.format(value);
            value = Float.valueOf(input);

            Log.d("APP", oldInput + " -> " + value);
        }
        catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }
这给了我以下输出:

100         -> 100.0
100.0       -> 100.0
100.00      -> 100.0
100.0000    -> 100.0
100.1       -> 100.1
100.10      -> 100.1
100.11      -> 100.11
100.111     -> 100.11
1.0         -> 1.0
0.1         -> 0.1
0.10        -> 0.1
0.1000      -> 0.1
0.111       -> 0.11
100,00      -> 100.0
当我得到如下输入字符串时出现问题:

1,000.25
java.lang.NumberFormatException:引发多点
异常

  • 1000.25
    是否为有效输入?(货币来自美国?)
  • 是否有更好或更优化的方法来解析输入
  • 试试这个:

    float result = Float.parseFloat(string.replaceAll(",", ""));
    

    要设置格式,请在替换字符后使用replace1000.25将其删除,该字符为1.000.25,不是有效的浮点,如果“,”只是一个可视分隔符,则可以更改
    input=input.replace(“,”,”)
    to
    input=input.replaceAll(“,”,”)