将 string 转换为 double 时,删除 java 中第一个点之后的任何多个点或任何小数点

Remove any multiple points or any decimal points after the first one in java when converting string to double

我有一个字符串,其值可能类似于 1000.021,然后我使用以下方法将其转换为双精度值

double amount = Double.parseDouble(1000.021);

当它只有一个小数位时它工作正常但是当我得到一个像 1000.021.2344.455 这样的字符串值时它在将 double 从 String 解析为 double 时崩溃我如何才能删除第一个小数点后的额外小数位一个所以当我得到一个像 1000.021.2344.455

这样的值时,我有一个双像 1000.0212344455

以下是我尝试过的方法,但它只是删除了所有小数位,并且它只接受 .format

中只有一个小数位的数字

new DecimalFormat("#").format(100.22);

尝试使用以下代码进行转换:

    public static double toDouble(String s) {
        int i1 = s.indexOf(".");
        return Double.parseDouble(s.substring(0, i1 + 1) + s.substring(i1).replaceAll("\.", ""));
    }

测试用例:

@Test
public void test(){
    double v = toDouble("1000.021.2344.455");
    assert v == 1000.0212344455;
}

我刚试过那个:

String str = "1000.021.2344.455";
    String newStr = "";
    boolean dot = true;
    for (int i = 0; i < str.length(); i++) {
        if (str.charAt(i) == '.' && dot) {
            newStr +=str.charAt(i);
            dot =false;
        }
        if(str.charAt(i) != '.' || dot){
            newStr +=str.charAt(i);
        }
    }

    Double num = Double.parseDouble(newStr);
    System.out.println(num);

输出:1000.0212344455