Search code examples
javanumberformatexception

Parsing a float and return it in a function


public static float fahrenheitEnCelsius(int f) {
    float cel = 5 / 9.0F * (f - 32);
    NumberFormat formatter = NumberFormat.getInstance(Locale.US);
    formatter.setMaximumFractionDigits(1);
    Float formatedFloat = new Float(formatter.format(cel));
    return formatedFloat;
}

I have function that takes an integer input of a value in Fahrenheit and returns the value in celsius with only one decimal after the comma. I am getting this error for an input value 2006 :

Exception in thread "main" java.lang.NumberFormatException: For input string: "1,096.7"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at java.lang.Float.<init>(Float.java:532)
at seance11mai.fahrenheitEnCelsius(seance11mai.java:42)
at seance11mai.main(seance11mai.java:47)

Solution

  • You can better return the string instead of float by changing the method to public static float fahrenheitEnCelsius(int f)

    If you really wants to return a float try this :

    public static float fahrenheitEnCelsius(int f) {
        float cel = 5 / 9.0F * (f - 32);
        NumberFormat formatter = NumberFormat.getInstance(Locale.US);
        formatter.setMaximumFractionDigits(1);
        String temp = formatter.format(cel);
        temp = temp.replaceAll("[,;\\s]","");
        Float formatedFloat = new Float(temp);
        System.out.println(formatedFloat);
        return formatedFloat;
     }