내 GWT 웹 응용 프로그램에는 가격을 보유하고있는 텍스트 상자가 있습니다. 어떻게 그 문자열을 BigDecimal로 변환 할 수 있습니까?GWT에서 문자열을 BigDecimal로 변환
답변
가장 쉬운 방법은 ValueBox를 상속하는 새로운 텍스트 상자 위젯을 만드는 것입니다. 이렇게하면 모든 문자열 값을 수동으로 변환 할 필요가 없습니다. ValueBox는 모든 것을 처리합니다.
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);
}
}
을
는 BigDecimal의 값은 그냥 갈 수있는 입력 얻으려면 0
그리고 당신의 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. GWT에서 문자열을 날짜로 변환
- 2. android에서 bigdecimal로 문자열 변환
- 3. ireport에서 문자열을 bigdecimal로 변환합니다.
- 4. 통화에서 수학을 수행하기 위해 String에서 BigDecimal로 변환
- 5. GWT에서 GMT로 변환
- 6. BigInteger를 BigDecimal로 변환하는 방법?
- 7. float에서 BigDecimal로 변환하면 위험할까요?
- 8. 클라이언트 측 GWT에서 문자열과 날짜 간의 변환
- 9. 문자열을 time_t로 변환
- 10. SSIS의 문자열을 DateTime으로 변환
- 11. 문자열을 클래스로 변환
- 12. 문자열을 파이썬으로 목록으로 변환
- 13. 문자열을 바이너리로 변환
- 14. 문자열을 다차원 배열로 변환
- 15. 문자열을 날짜 시간으로 변환
- 16. 문자열을 VBA의 XlChartType으로 변환
- 17. SML에서 문자열을 실수로 변환
- 18. ado.net의 문자열을 datetime으로 변환
- 19. 문자열을 jQuery로 이미지로 변환
- 20. Postgres 문자열을 숫자로 변환
- 21. 문자열을 Uri로 변환
- 22. 문자열을 NSDate로 변환
- 23. 문자열을 바이너리로 변환
- 24. PHP에서 문자열을 문자로 변환
- 25. 문자열을 int - datareader로 변환
- 26. 문자열을 datetime 문제로 변환
- 27. 문자열을 v8에서 작동하도록 변환
- 28. 문자열을 char로 변환
- 29. UTF 문자열을 InputStream으로 변환
- 30. 지수로 변환 할 문자열을
내가 GWT에 익숙하지 오전하지만 자바에서 그냥 쓰기 :'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