在我的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. 将字符串转换为bigDecimal
- 3. 将GWT xml.client.Document转换为XML字符串
- 4. Java BigDecimal转为字符串
- 5. 将字符串转换为ireport中的bigdecimal
- 6. BlazeDS的转换BigDecimal的字符串
- 7. 错误转换字符串的BigDecimal
- 8. 转换的BigDecimal字符串货币
- 9. 将BigDecimal转换为不带尾随零的字符串
- 10. 当字符串包含'e'时,将字符串转换为BigDecimal Java
- 11. 将BigDecimal转换为字符串以进行检查
- 12. 如何将百分比字符串转换为BigDecimal?
- 13. 无法为BigDecimal转换为字符串在java中
- 14. 将字符串转换为GWT中的JSON对象(JSNI)
- 15. 将字符串转换为字符串
- 16. 将字符串转换为字符串
- 17. 将字符串转换为
- 18. 将字符串转换为“_”
- 19. 将字符串转换为?
- 20. 将字符串转换为GWT上的日期
- 21. 将字符串转换为日期转换为Talend Open Studio中的字符串
- 22. 将BigDecimal转换为整数
- 23. 将转换器映射字符串转换为字符串
- 24. 将字节字符串转换为python中的字符串
- 25. 将字符串转换为字符
- 26. 将字符串转换为字符
- 27. 将字符串转换为字符
- 28. 将字符*转换为字符串
- 29. 将char字符串转换为字符
- 30. 将字符[]转换为字符串
我不熟悉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