我有一個相當簡單的問題。我得到像6.03
這樣的實數輸入,但那給了我錯誤。如果我將其更改爲6,03
,那沒關係。但是,我無法更改需要處理的輸入,那麼如何告訴Java使用.
作爲分隔符而不是,
?如何指定小數點分隔符
Scanner sc = new Scanner(System.in);
double gX = sc.nextDouble(); // Getting errors
感謝
我有一個相當簡單的問題。我得到像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