How to specify decimal delimiter

前端 未结 3 402
遥遥无期
遥遥无期 2021-01-26 01:26

I have a fairly simple problem. I am getting real-number input like6.03, but that gives me errors. If I change it to 6,03, it\'s ok. I, however, can\'t

相关标签:
3条回答
  • 2021-01-26 01:56

    Scanner can be provided with Locale to use, you need to specify Locale that uses . as decimal separator:

    Scanner sc = new Scanner(System.in).useLocale(Locale.ENGLISH); 
    
    0 讨论(0)
  • 2021-01-26 01:56

    Taken directly from the manual.

    Locale-Sensitive Formatting

    The preceding example created a DecimalFormat object for the default Locale. If you want a DecimalFormat object for a nondefault Locale, you instantiate a NumberFormat and then cast it to DecimalFormat. Here's an example:

    NumberFormat nf = NumberFormat.getNumberInstance(loc);
    DecimalFormat df = (DecimalFormat)nf;
    df.applyPattern(pattern);
    String output = df.format(value);
    System.out.println(pattern + " " + output + " " + 
                       loc.toString());
    

    Running the previous code example results in the output that follows. The formatted number, which is in the second column, varies with Locale:

    ###,###.###      123,456.789     en_US
    ###,###.###      123.456,789     de_DE
    ###,###.###      123 456,789     fr_FR
    
    0 讨论(0)
  • 2021-01-26 02:02

    You're probably running into Locale issues. You can use java.text.NumberFormat for parsing.

    NumberFormat format = NumberFormat.getInstance(Locale.US);
    Number number = format.parse("6.03");
    double d = number.doubleValue();
    
    0 讨论(0)
提交回复
热议问题