在我的GWT Web應用程序中,我有一個包含價格的文本框。 如何將該字符串轉換爲BigDecimal?將字符串轉換爲GWT中的BigDecimal
回答
最簡單的方法是創建繼承ValueBox的新文本框小部件。 如果你這樣做,你不必手動轉換任何字符串值。 ValueBox負責所有這些。
要獲取BigDecimal值中輸入你可以去:
BigDecimal value = myTextBox.getValue();
你BigDecimalBox.java:
public class BigDecimalBox extends ValueBox<BigDecimal> {
public BigDecimalBox() {
super(Document.get().createTextInputElement(), BigDecimalRenderer.instance(),
BigDecimalParser.instance());
}
}
然後你BigDecimalRenderer.java
public class BigDecimalRenderer extends AbstractRenderer<BigDecimal> {
private static BigDecimalRenderer INSTANCE;
public static Renderer<BigDecimal> instance() {
if (INSTANCE == null) {
INSTANCE = new BigDecimalRenderer();
}
return INSTANCE;
}
protected BigDecimalRenderer() {
}
public String render(BigDecimal object) {
if (null == object) {
return "";
}
return NumberFormat.getDecimalFormat().format(object);
}
}
而且你BigDecimalParser.java
package com.google.gwt.text.client;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.text.shared.Parser;
import java.text.ParseException;
public class BigDecimalParser implements Parser<BigDecimal> {
private static BigDecimalParser INSTANCE;
public static Parser<BigDecimal> instance() {
if (INSTANCE == null) {
INSTANCE = new BigDecimalParser();
}
return INSTANCE;
}
protected BigDecimalParser() {
}
public BigDecimal parse(CharSequence object) throws ParseException {
if ("".equals(object.toString())) {
return null;
}
try {
return new BigDecimal(object.toString());
} catch (NumberFormatException e) {
throw new ParseException(e.getMessage(), 0);
}
}
}
我試過這種方法 - 它有點作品。問題是'getDecimalFormat()'返回一個包含數千個分隔符的'NumberFormat'。而新的BigDecimal不解析數千個分隔符。似乎沒有簡單的解決方法,沒有解析到適當的「加倍」和舍入。 –
@Boris the Spider,你當然可以使用自定義的NumberFormat,它不會輸出數千個分隔符,或者在分析之前將分隔符從字符串中剝離或使用NumberFormat來解析BigDecimal(通過.setParseBigDecimal(true))。 http://stackoverflow.com/questions/14346403/how-to-parse-a-string-number-into-a-bigdecimal – Strelok
第一種選擇有損'NumberFormat'的作用 - 在這一點上'BigDecimal.toPlainString第二種選擇帶來了各種各樣的語言環境問題 - 當然可行,但是好像重新發明了現有的輪子,最後一個會很好,但是這是'com.google.gwt.i18n.client。 NumberFormat'沒有這個方法,使用'double'似乎是最簡單的解決方案 - 如果只需要一個小數位,它的精度就足夠了。 –
- 1. 轉換字符串爲BigDecimal
- 2. Jooq將字符串轉換爲BigDecimal
- 3. 將字符串轉換爲bigDecimal
- 4. 將GWT xml.client.Document轉換爲XML字符串
- 5. Java BigDecimal轉爲字符串
- 6. 將字符串轉換爲ireport中的bigdecimal
- 7. 將字符串列表轉換爲java中的BigDecimal列表
- 8. 在android中將字符串轉換爲bigdecimal
- 9. 在javascript中將字符串轉換爲bigdecimal
- 10. GWT。將JSON字符串轉換爲字符串[]
- 11. BlazeDS的轉換BigDecimal的字符串
- 12. 將Bigdecimal轉換爲時間格式爲字符串
- 13. 錯誤轉換字符串的BigDecimal
- 14. 轉換的BigDecimal字符串貨幣
- 15. 將BigDecimal轉換爲不帶尾隨零的字符串
- 16. 將BigDecimal轉換爲字符串以進行檢查
- 17. 如何將百分比字符串轉換爲BigDecimal?
- 18. 將字符串轉換爲bigdecimal時出錯
- 19. 無法爲BigDecimal轉換爲字符串在java中
- 20. 將字符串轉換爲GWT中的JSON對象(JSNI)
- 21. 將字符串轉換爲字符串
- 22. 將字符串轉換爲字符串
- 23. 將字符串轉換爲字符串
- 24. 將字符串轉換爲int,int轉換爲字符串
- 25. 將字符串轉換爲「_」
- 26. 將字符串轉換爲
- 27. 將字符串轉換爲?
- 28. 將字符串轉換爲GWT上的日期
- 29. 將字符串轉換爲byte []和byte []轉換爲JAVA中的字符串
- 30. 將字符串轉換爲日期轉換爲Talend Open Studio中的字符串
我不熟悉GWT,但在Java中,你只是寫:'BigDecimal的BD =新的BigDecimal(yourString);'。 – assylias
[Safe String to BigDecimal conversion]可能的重複(http://stackoverflow.com/questions/3752578/safe-string-to-bigdecimal-conversion) – Kai
我認爲你需要使用函數DecimalFormat.setParseBigDecimal,但是你不能在GWT – kroiz