私の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'を返すことです。 'new 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. ireportの文字列をbigdecimalに変換する
- 2. BigDecimalに変換する前の文字列の長さ
- 3. blazedsはBigDecimalを文字列に変換します
- 4. BigDecimalを使用しないでRubyのセント文字をドル文字列に変換する
- 5. 文字列をJavaの文字列配列に変換する
- 6. 文字列[]を文字列に変換するには?
- 7. 文字列に文字配列を変換する
- 8. ユニコード文字列をバイト文字列に変換する
- 9. 標準のC++文字列を文字列に変換する^
- 10. C++文字列[4]を文字列に変換する
- 11. Pythonの文字列リストを文字列に変換する
- 12. Uriを文字列と文字列に変換する
- 13. 狭い文字列をワイド文字列に変換する
- 14. 文字列を文字配列に変換する
- 15. 文字列を文字列に変換する
- 16. JavaScript文字列をハッシュ文字列に変換する
- 17. Pythonで文字列のリストをUnicode文字に変換する
- 18. 文字列を文字列に変換する方法hash_map(文字列、文字列、stringHashFunction>をLinuxでC++
- 19. PHPで文字列を変換する
- 20. ユニコードワードで文字列を変換する
- 21. 文字列をCLLocationCoordinate2Dに変換する
- 22. 文字列をdatetimeに変換する
- 23. SVGSVGElementを文字列に変換する
- 24. 文字列をdatetimeに変換する
- 25. 式を文字列に変換する
- 26. フォームを文字列に変換する
- 27. 文字列をBigIntegerに変換する
- 28. SIDを文字列に変換する
- 29. Ruby:ARGVを文字列に変換する
- 30. GUIDを文字列に変換する
私は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