繁体   English   中英

将字符串转换为bigdecimal时出错

[英]error converting string to bigdecimal

早上好,我正在将字符串解析为大十进制,但是当我将模式设置为ans simbols时,调试器将返回错误。 代码非常简单,我从文档以及此处的stackoverflow上的其他帖子中获取了代码,我不记得它是什么地址。 如下:

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    symbols.setGroupingSeparator('.');
    symbols.setDecimalSeparator(',');
    String pattern = "#.##0,0#";
    DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
    decimalFormat.setParseBigDecimal(true);

(BigDecimal) decimalFormat.parse(entity.getQta()))

在此行抛出错误:

DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);

GWT调试器的StackTrace:

com.smartgwt.client.core.JsObject$SGWT_WARN: 

09:29:12.673:MOU6:WARN:RPCManager:ATTENZIONE: si e' verificato un errore imprevisto [SC: 500]undefined - response: {clientContext: Obj,
status: -1,
invalidateCache: true,
data: "ATTENZIONE: si e' verificato un errore i..."[59],
internalClientContext: Obj,
context: undef,
startRow: 0,
endRow: 0,
totalRows: 0}   at 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)   at  
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)    at 
 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)   at 
 java.lang.reflect.Constructor.newInstance(Constructor.java:422)    at 
 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105)  at 
 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)     at 
 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)  at 
  com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)     at 
 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)  at 
  com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)     at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)  at 
com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:304)     at 
 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)  at com.smartgwt.client.data.DataSource.processResponse(DataSource.java)     at 
com.sgss.common.client.ds.SgssGwtRpcDataSource.handleFailure(SgssGwtRpcDataSource.java:205)     at 
 com.sgss.common.client.ds.SgssGwtRpcDataSource$GenericAsyncCallback.onFailure(SgssGwtRpcDataSource.java:148)   at 
 com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:237)     at 
com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:259)     at 
com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412)     at sun.reflect.GeneratedMethodAccessor417.invoke(Unknown Source)    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)   at java.lang.reflect.Method.invoke(Method.java:497)     at 
 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)  at 
 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)     at 
 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)  at 
 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)  at 
 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)  at 
 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)  at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)  at 
 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:284)  at 
 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)     at com.google.gwt.core.client.impl.Impl.apply(Impl.java)    at 
 com.google.gwt.core.client.impl.Impl.entry0(Impl.java:356)     at 
 sun.reflect.GeneratedMethodAccessor412.invoke(Unknown Source)  at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  at java.lang.reflect.Method.invoke(Method.java:497)     at 
  com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)     at 
 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)     at 
 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)  at 
 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)   at 
  com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)    at 
 com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)   at java.lang.Thread.run(Thread.java:745)

编辑:我没有提到GWT(就我而言,是SMartGwt,因为我正在后端进行此解析,该后端不使用smartgwt,而仅使用spring和hibernate。

您的模式不正确,在以下行中:

String pattern = "#.##0,0#";

根据文档https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html (在“ 特殊模式字符 ”部分中), 模式中的“,”符号是分组分隔符-不是字面上的逗号; “。” 保留给小数点分隔符,而不是点字符。

由于您的数字格式为1.743.711,67(而不是1,743,711.67),因此您使用了symbol变量来将“,”指定为小数点分隔符和“。”。 作为分组分隔符。 但是,模式不遵循相同的逻辑。 它将交换分组分隔符和十进制分隔符的位置,因此会失败。

我建议您尝试:

String pattern = "#,##0.0#";

用相同的代码,看看是否有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM