Emmanuel Njorodongo
Emmanuel Njorodongo

Reputation: 1292

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

I am having a string which may have a value like 1000.021 which i then convert to double using the method below

double amount = Double.parseDouble(1000.021);

This just works fine when its a single decimal place but when i get a sting value like 1000.021.2344.455 it crashes on parsing the double from String to double how can i be able to remove the extra decimal places after the first one so the i have a double like 1000.0212344455 when i get a value like 1000.021.2344.455

Below is what i have tried but it just removes all the decimal places and it just accepts a number with a single decimal place in the .format


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

Upvotes: 0

Views: 325

Answers (2)

Ali Mamedov
Ali Mamedov

Reputation: 139

I just tried that one:

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);

Output: 1000.0212344455

Upvotes: 0

Prog_G
Prog_G

Reputation: 1615

Try the below code for the conversion:

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

Test case:

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

Upvotes: 1

Related Questions