簡體   English   中英

任意精確數字和Javascript,Google Web Toolkit

[英]Arbitrary precision numbers and Javascript, Google Web Toolkit

這不是一個真正的問題,因為我已經解決了這個問題,但我想我會讓每個人都知道,因為它可能會對人們使用Google Web Toolkit的方式產生很大的影響。

所以問題之一就是Google 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結束時,這將產生一個String,我們將不得不構建一個BigInteger。

這一切都很有道理,為什么谷歌不會解決7555,但這引出了一個真正的開放性問題:如何處理Javascript中的高精度數字?

一般來說,如果基於Web的Javascript和Google Web Toolkit前端要挑戰本機前端,那么可能會出現我們處理任意精度數的情況,而不是受到評論3的53位精度的限制。談論。 更糟糕的是,這個限制是否也會影響node.js或任何其他服務器端的Javascript?

有一個很好的工作,尤其是使用或無縫使用Google Web Toolkit的工作嗎?

GWT可以對大於53位的整數進行數學運算,因為它模擬Long(我認為是BigInteger)。 數學運算速度較慢,因為它不能只使用本機JS操作,但沒有硬性限制。

因此,GWT已經實現了變通方法,它已經內置。當你需要一個大整數時,你只需要避免傳遞數字JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM