如何指定小数点分隔符

问题描述:

我有一个相当简单的问题。我得到像6.03这样的实数输入,但那给了我错误。如果我将其更改为6,03,那没关系。但是,我无法更改需要处理的输入,那么如何告诉Java使用.作为分隔符而不是,如何指定小数点分隔符

Scanner sc = new Scanner(System.in); 
double gX = sc.nextDouble(); // Getting errors 

感谢

+2

请格式的数字,这是在第二列,与区域设置而异显示你的代码。执行此转换的方式有很多,我们不知道您使用的是什么。 – 2012-01-31 15:08:13

+0

已添加代码。没想到它很重要,但是这里有 – 2012-01-31 15:09:45

Scanner可以提供Locale使用,你需要指定Locale使用.作为小数点分隔符:

Scanner sc = new Scanner(System.in).useLocale(Locale.ENGLISH); 

你可能运行到地点的问题。您可以使用java.text.NumberFormat进行分析。

NumberFormat format = NumberFormat.getInstance(Locale.US); 
Number number = format.parse("6.03"); 
double d = number.doubleValue(); 

Taken directly from the manual.

语言环境敏感的格式化

前面的示例中创建默认语言环境一个DecimalFormat对象。如果你想为一个非默认的Locale使用一个DecimalFormat对象,你可以实例化一个NumberFormat然后将其转换为DecimalFormat。以下是一个示例:

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

运行之前的代码示例导致后面的输出。

###,###.###  123,456.789  en_US 
###,###.###  123.456,789  de_DE 
###,###.###  123 456,789  fr_FR 
+0

似乎有很多代码只是为了做到这一点,考虑到在Delphi中,人们可以做'DecimalSeparator:='|';'并完成。感谢 – 2012-01-31 15:13:37

+2

@Magicmaster:这可能是全球变化,影响全球国家?不是一个好主意...... – 2012-01-31 15:17:18