gpt4 book ai didi

javascript - GWT 的 JSONParser 生成不正确的数字值

转载 作者:行者123 更新时间:2023-11-29 20:23:32 25 4
gpt4 key购买 nike

我使用 GWT 并从返回 DataTable 的 ASP.NET 网络服务方法解析 JSON 结果。我可以很好地将结果解析为 JSONvalue/JSONObject。我遇到的问题是我在 DECIMAL(20, 0) 中的一个列和解析为 JSON 的值不准确。为了演示不需要 WS 调用,在 GWT 中我将它们放在一起:

String jsonString = "{value:4768428229311981600}";
JSONObject jsonObject = JSONParser.parse( jsonString ).isObject();
Window.alert( jsonObject.toString() );

这反过来提醒:

{"value":4768428229311982000}

我的理解是 GWT 的 JSONParser 只是使用 eval() 进行解析,所以这是我从未意识到的 JavaScript 的某种数字/精度问题。我承认我在 JavaScript 中不怎么处理数字,我可以通过更改 .NET WebService 以将此列作为字符串返回来解决这个问题,但我真的不想那样做。

感谢您的帮助。

最佳答案

我之前回答过一个类似的问题 - Arbitrary precision in GWT

一个更新的答案是 BigDecimal 支持看起来正为 GWT 2.1

在那之前,如果您不需要在客户端对数字进行计算,我建议将它们作为字符串传递。

此外,查看您的示例,您可以将它们作为字符串传输,并可能使用模拟的 GWT java.lang.Long。

最后,你可以试试 BigDecimal 的 svn 版本 GWT-Math - 将 java 文件放到你的 jar 中应该不是那么糟糕(它不需要编译,因为它都是 emul 代码)

如果你走那条路,你仍然需要将数字作为 JSON 字符串传递,但你可以执行有意义的数学运算。

关于javascript - GWT 的 JSONParser 生成不正确的数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com