如何指定小数点分隔符
我有一个相当简单的问题。我得到像6.03
这样的实数输入,但那给了我错误。如果我将其更改为6,03
,那没关系。但是,我无法更改需要处理的输入,那么如何告诉Java使用.
作为分隔符而不是,
?如何指定小数点分隔符
Scanner sc = new Scanner(System.in);
double gX = sc.nextDouble(); // Getting errors
感谢
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
似乎有很多代码只是为了做到这一点,考虑到在Delphi中,人们可以做'DecimalSeparator:='|';'并完成。感谢 – 2012-01-31 15:13:37
@Magicmaster:这可能是全球变化,影响全球国家?不是一个好主意...... – 2012-01-31 15:17:18
请格式的数字,这是在第二列,与区域设置而异显示你的代码。执行此转换的方式有很多,我们不知道您使用的是什么。 – 2012-01-31 15:08:13
已添加代码。没想到它很重要,但是这里有 – 2012-01-31 15:09:45