iOS 使用WKWebView 的 evaluateJavaScript 方法傳參過大導(dǎo)致數(shù)字精度缺失的問題

今天在和 H5 交互的時(shí)候,發(fā)現(xiàn)一個(gè)奇怪的問題,當(dāng)我把字符串格式的帶參方法傳給前端時(shí),數(shù)字參數(shù)的最后一位數(shù)字會(huì)發(fā)生改變。

 NSString *jsMothod=[NSString stringWithFormat:@"build_visitor_group(%@)",theGroup.groudID];
 [self.rootViewController.wc.webView evaluateJavaScript:jsMothod completionHandler:nil];

以上代碼中,theGroup.groudID 為 15066676292965107。
但是傳給前端的時(shí)候,參數(shù)會(huì)自動(dòng)變成 15066676292965108。

IMG_2746(20170930-092748).jpg

這個(gè)彈窗是 H5 給我發(fā)的,可以看到,尾數(shù)為7的數(shù)字參數(shù)到了前端就變化成了8。

后來我在參數(shù)兩側(cè)加了雙引號(hào),就解決了在和H5交互的過程中數(shù)字發(fā)生變化的問題了。

NSString *jsMothod=[NSString stringWithFormat:@"build_visitor_group(\"%@\")",theGroup.groudID];
[self.rootViewController.wc.webView evaluateJavaScript:jsMothod completionHandler:nil];

因?yàn)榭床坏?evaluateJavaScript 的實(shí)現(xiàn)方法,所以沒辦法判斷問題出在哪。可以猜想是在和 H5 交互的過程中,系統(tǒng)首先將字符串格式的數(shù)字轉(zhuǎn)化成了基礎(chǔ)數(shù)據(jù)類型,再將基礎(chǔ)數(shù)據(jù)類型的數(shù)字傳到前端轉(zhuǎn)化成字符串,從而導(dǎo)致了數(shù)字精度缺失發(fā)生變化。

在數(shù)字兩側(cè)加上雙引號(hào)能夠防止數(shù)字自動(dòng)轉(zhuǎn)換成基礎(chǔ)數(shù)據(jù)類型,強(qiáng)制將其聲明為字符串類型,這樣無論多大的數(shù)字都能夠正確的傳達(dá)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,675評(píng)論 0 4
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,983評(píng)論 25 709
  • 你們身邊是否有這樣一些人,愛吃與抹茶有關(guān)的一切美食,冰淇淋甜筒要吃抹茶味的,冬天的熱飲夏天的冰飲也是選擇抹茶味的,...
    烘焙藝匠社閱讀 2,474評(píng)論 0 22
  • Nov 30, 陰天。 吃完早飯,9點(diǎn)左右出的門。路上很多匆匆的行人,聽到道路上的喧囂有點(diǎn)不習(xí)慣。門口小花園開了一...
    beirikui閱讀 429評(píng)論 0 0

友情鏈接更多精彩內(nèi)容