【问题标题】:How to convert a string with multiple points to double in android如何在android中将具有多个点的字符串转换为double
【发布时间】:2019-02-07 21:10:54
【问题描述】:

我有一个包含多个点的字符串“3,350,800”,我想将其转换为双精度但有错误multiple points

String number = "3,350,800"
number = number.replace(",", ".");
double value = Double.parseDouble(number);

错误:java.lang.NumberFormatException:多点

【问题讨论】:

  • 您想将其解析为带小数位的双精度数还是整数?如果您想要双精度,您希望哪个逗号成为小数位?
  • 一个数字不能有多个小数点。所以无法解析为double

标签: java android number-formatting numberformatexception


【解决方案1】:

. 字符在英文中用作小数点,一个数字中不能有多个。

您似乎将它用作千位分隔符。这在几个地区是合法的 - 你只需要使用一个允许它的地方,例如:

String number = "3.350.800";
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
double value = format.parse(number).doubleValue();

【讨论】:

    【解决方案2】:

    混合其他答案,没有理由更改 , for 。然后获取德国本地。

    String number = "3,350,800";
    NumberFormat format = NumberFormat.getInstance();
    double value = format.parse(number).doubleValue();
    System.out.println(value);
    

    输出:

    3350800.0
    

    【讨论】:

      【解决方案3】:

      你需要使用这样的东西:

      String number = "3,350,800";
      number = number.replaceAll(",", "");
      double value = Double.parseDouble(number);
      System.out.println(value);
      

      【讨论】:

        【解决方案4】:

        你想得到什么数字?
        3.350.800 是你试图解析为双精度的数字,
        但这显然不是一个数字,因为有“多个点”。

        如果您只想获得3,350,800 作为您的号码,只需更改此行 -
        number = number.replace(",", ".");

        到这里 -
        number = number.replace(",", "");

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-02
          • 2013-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-20
          • 2014-05-01
          相关资源
          最近更新 更多