任意精度数字和Javascript,Google Web Toolkit
Arbitrary precision numbers and Javascript, Google Web Toolkit
一个真正的问题,因为我确实有解决这个问题的方法,但我想我会让每个人都知道,因为它可能会对人们使用Google Web Toolkit的方式产生相当大的影响。
所以问题之一是谷歌gson在JSON中表示数字的方式。例如,int myInt = 2
将变得"myInt":2
,long myLong = 5432198765L
将变得"myLong":5432198765
,BigInteger myBI = 1310381093810938109481049128409487109378109248104098130981039810983
将变得"myBI":1310381093810938109481049128409487109378109248104098130981039810983
。虽然 gson 本身可以毫无问题地反序列化它,但 JSON 中 GWT 2.4 中的 AutoBeans 框架不会喜欢它。问题 6331 修复了即将发布的 GWT 2.5 版本中的长表示形式。但是,由于 Javascript 数字精度的工作方式,问题 7555 将无法解决。
因此,我们需要将 BigIntegers 表示为字符串,它将起作用,例如,String myBIStr = new BigInteger("1310381093810938109481049128409487109378109248104098130981039810983").toString()
将表示为 "myBIStr":"1310381093810938109481049128409487109378109248104098130981039810983"
。在GWT端,这将产生一个字符串,我们将不得不从中构建一个BigInteger。
谷歌为什么不解析7555是完全有道理的,但这让我想到了一个真正的悬而未决的问题:如何处理Javascript中的高精度数字?
一般来说,如果基于 Web 的 Javascript 和 Google Web Toolkit 前端要挑战原生前端,那么可能会出现我们使用任意精度数字的情况,而不是受到注释 3 所说的 53 位精度的限制。更糟糕的是,这个限制是否也影响node.js或任何其他服务器端Javascript?
有没有一个很好的解决方法,特别是使用或无缝使用Google Web Toolkit的解决方法?
GWT 可以对大于 53 位的整数进行数学运算,因为它模拟 Long(我认为还有 BigInteger(。 数学速度较慢,因为它不能只使用本机JS操作,但没有硬性限制。
因此,GWT 已经实施了解决方法,并且它是内置的。 当您需要大整数时,您只需要避免传递数字 JSON。
- 仅在加载Google Web字体后绘制到画布
- Google Web App 将单元素数组视为单个字符的数组
- 从本地HTML / JavaScript(没有Web服务器)访问Google API
- Google AppRTC Web Server
- 任意精度数字和Javascript,Google Web Toolkit
- XMLHttpRequest在Google Chrome Packaged Web App中不起作用
- 在 Google Apps Script Web App 中显示文件和文件夹
- Google Web Toolkit,追加错误
- 你如何设置requirejs和Google Web Fonts
- 有没有办法将Google Analytics for Web置于“试运行”模式,例如GA移动SDK
- .gs/.Google Apps 脚本作为 Web 应用,使用表单元素、HTML 服务和电子表格
- 如何在我的Jersey REST Web服务中使用Google OAuth2
- 在 asp.net Web应用程序中包括Google Analytics javascript代码
- Google Web Map 复选框在 Firefox 和 Chrome 中有效,但在 IE 中不起作用
- 如何在Python开发Web服务器上使用实际的Google身份验证
- Javascript Google Maps API在Web浏览器中加载,但不在Android浏览器中加载
- Google Drive Web API”;文件:列表;带有q参数和nextPageToken的命令无法正常工作
- Google Web Toolkit样例应用程序
- Google Web 工具包运行时错误:方法中缺少非本机或抽象方法中的“代码”属性
- Google Web Toolkit(GWT),获取遗留的JavaScript代码,通过GWT应用程序进行AJAX调用(