簡體   English   中英

GWT-在默認語言環境中格式化數字,而不管選擇的語言環境如何

[英]GWT - formatting numbers in default locale regardless of selected locale

我正在嘗試使用GWT的NumberFormat格式化和解析數字,但是無論用戶選擇哪種語言環境,我都想使用默認格式(例如EN語言環境的格式),以便用戶可以選擇任何語言,但是我希望數字是使用默認格式(例如1,234.89)顯示和解析。

有沒有辦法做到這一點?

編輯:

對於前。 此代碼僅在EN語言環境中有效,在RU中我得到NumberFormatException

NumberFormat format = NumberFormat.getFormat("#,##0.00");
String n = "1,234.89"; 
double value = format.parse(n);
//do something with value...

我將需要獲取Locale EN的NumberFormat實例,但是我無法在javadocs中找到任何可以做到這一點的方法/構造函數。

我有應該使用NumberFormat.format而不是NumberFormat.parse

NumberFormat format = NumberFormat.getFormat("#,##0.00");
Double n = 1234.89;
RootPanel.get().add(new HTML("Number: " + format.format(n)));

如果您已經具有數字的格式化字符串表示形式,則不需要NumberFormat

String n = "1,234.89"; 
RootPanel.get().add(new HTML("Number: " + n));

NumberFormat總是解析本地化的文本。 它使用NumberConstants根據當前語言環境通過延遲綁定實例化。 不幸的是,您不能強制使用其他NumberConstants

但是您知道默認的分組分隔符( , )和十進制分隔符( . )。 您還可以獲取當前語言環境的分組和小數點分隔符。 因此,您只需要在解析之前替換它們即可。

String n = "1,234.89";
n = n.replace(",", LocaleInfo.getCurrentLocale().getNumberConstants().groupingSeparator());
n = n.replace(".", LocaleInfo.getCurrentLocale().getNumberConstants().decimalSeparator());
double value = format.parse(n);

這適用於任何語言環境。

要使用默認語言環境格式化數字,只需在當前語言環境格式化后執行相反的替換即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM