欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決超出JS的安全整數(shù)的限制范圍問題

 更新時間:2024年08月30日 14:52:14   作者:攻^城^獅  
這篇文章主要介紹了解決超出JS的安全整數(shù)的限制范圍問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

解決超出JS的安全整數(shù)的限制范圍

JavaScript 能夠準確表示的整數(shù)范圍在-2^53到 2^53之間,超過這個范圍,無法精確表示這個值。

Number.MIN_SAFE_INTEGER //-9007199254740991
Number.MAX_SAFE_INTEGER // 9007199254740991

此時用到 json-bigint將后端返回數(shù)據(jù)處理處理之后才能正常使用:

  • 1.項目需要安裝的依賴
> npm i json-bigint
  • 2.引入json-bigint文件
>import JSONbig from 'json-bigint'

transformResponse是將后端返回的原始數(shù)據(jù)進行處理

下面使用 : try-catch 來捕獲異常

因為:后端返回的數(shù)據(jù)可能不是 JSON 格式字符串,如果不是則將data數(shù)據(jù)原封不動的直接返回給請求使用

const request = axios.create({
  baseURL: '', // 請求的基礎路徑
  transformResponse: [function (data) {
    try {
      return JSONbig.parse(data)
    } catch (err) {
      return data
    }
  }]
  })

請求回來的數(shù)據(jù)使用.toString() 即可獲取

request({
	method:'GET',//請求方法
	url:'',//請求路徑
	params: {},//請求參數(shù)拼接在url上面
}).then(res=>{
			console.log(res.data.id.toString())
			})

JS實現(xiàn)超范圍的數(shù)相加

在js中能表示的最大安全整數(shù)是 9007199254740991,可以用API Number.MAX_SAFE_INTEGER 看一下

超出范圍就會發(fā)生精度丟失,像這樣

解決方法

相當于一個字符串相加的問題。不能把數(shù)字簡單的相加,需要倒序取數(shù)字的每一位,進行相加,大于等于10,進1,小于10,進0,把結果保存在一個字符串中。

注意點:

  • 1、要考慮長度不一樣
  • 2、要考慮進位,所以需要倒序來相加

代碼如下:

function add(a,b){
    // 保存最終結果
    var res='';

    // 保存兩位相加的結果 和 進位值
    var c=0;

    // 字符串轉數(shù)組
    a = a.split('');
    b = b.split('');

    while (a.length || b.length || c){
        // ~~ 用來把String類型 轉為 Number類型
        // 把兩位相加的結果 和 進位值相加
        // pop方法返回數(shù)組的最后一位,并刪除
        c += ~~a.pop() + ~~b.pop();

        // 取余,把余數(shù)拼接到最終結果中
        res = c % 10 + res;

        // 保存進位,true 或者 false
        c = c>9;
    }
    return res;
}
add('11111111111111111','22222222222222222');

解釋:

1、~ 是JavaScript中的操作符,按位非

~~ 經(jīng)常用來進行取整和類型轉換,他和顯示的用Number進行類型轉換還是有區(qū)別的,比如處理 undefined 的時候。

而在兩個大整數(shù),長度不一樣的時候,其中一個數(shù) 已經(jīng) pop 了所有數(shù)組中的元素之后,還要pop的話,就會返回 undefined ,所以如果用 Number 顯示的轉化,起碼要寫成這樣。

var ai = a.pop();
ai = ai===undefined? 0:Number(ai);

var bi = b.pop();
bi = bi===undefined? 0:Number(bi);

c += ai + bi;

明顯是用 ~~ 方便。

2、在保存進位值的時候,用的并不是 1 和 0 ,而是true 和 false,這是因為隱式類型轉換的時候,true會轉為1,false會轉為0。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 原生JS實現(xiàn)的輪播圖功能詳解

    原生JS實現(xiàn)的輪播圖功能詳解

    這篇文章主要介紹了原生JS實現(xiàn)的輪播圖功能,結合實例形式分析了javascript實現(xiàn)輪播圖的原理、操作技巧與相關注意事項,需要的朋友可以參考下
    2018-08-08
  • Fetch超時設置與終止請求詳解

    Fetch超時設置與終止請求詳解

    這篇文章主要給大家介紹了關于Fetch超時設置與終止請求的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Fetch具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • JavaScript中代理與反射的用法詳解

    JavaScript中代理與反射的用法詳解

    JavaScript作為一門靈活而強大的語言,提供了代理(Proxy)與反射(Reflect)這兩個元編程工具,它們?yōu)殚_發(fā)者提供了更深層次的語言控制和操作,在本篇博客中,我們將深入研究代理與反射的概念、用法,以及如何巧妙地結合它們來實現(xiàn)高級的編程技巧,需要的朋友可以參考下
    2023-12-12
  • Bootstrap圖片輪播組件Carousel使用方法詳解

    Bootstrap圖片輪播組件Carousel使用方法詳解

    這篇文章主要為大家詳細介紹了Bootstrap圖片輪播組件Carousel使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • layui-table表復選框勾選的所有行數(shù)據(jù)獲取的例子

    layui-table表復選框勾選的所有行數(shù)據(jù)獲取的例子

    今天小編就為大家分享一篇layui-table表復選框勾選的所有行數(shù)據(jù)獲取的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 用javascript實現(xiàn)記錄來賓姓名的代碼

    用javascript實現(xiàn)記錄來賓姓名的代碼

    用javascript實現(xiàn)記錄來賓姓名的代碼...
    2007-03-03
  • iframe父頁面獲取子頁面參數(shù)的方法

    iframe父頁面獲取子頁面參數(shù)的方法

    這篇文章主要介紹了iframe父頁面獲取子頁面參數(shù)的方法,需要的朋友可以參考下
    2014-02-02
  • JS中使用TextDecoder解碼二進制數(shù)據(jù)(數(shù)據(jù)流的逐步解碼)

    JS中使用TextDecoder解碼二進制數(shù)據(jù)(數(shù)據(jù)流的逐步解碼)

    JS中使用TextDecoder將二進制數(shù)據(jù)轉換為可讀文本字符串,首先,創(chuàng)建TextDecoder對象,使用decode()方法,解碼為字符串,,{stream:true}選項允許處理流式數(shù)據(jù),適用于大型數(shù)據(jù)流的逐步解碼,TextDecoder廣泛應用于WebSocket通信、文件讀取、網(wǎng)絡響應等場景
    2024-10-10
  • TypeScript中定義變量方式以及數(shù)據(jù)類型詳解

    TypeScript中定義變量方式以及數(shù)據(jù)類型詳解

    TypeScript支持 JavaScript的所有語法和語義,同時通過作為ECMAScript的超集來提供一些額外的功能,如類型檢測和更豐富的語法,這篇文章主要給大家介紹了關于TypeScript中定義變量方式以及數(shù)據(jù)類型詳解的相關資料,需要的朋友可以參考下
    2022-08-08
  • 使用HTML5+Boostrap打造簡單的音樂播放器

    使用HTML5+Boostrap打造簡單的音樂播放器

    這篇文章主要介紹了使用HTML5+Boostrap打造簡單的音樂播放器 的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08

最新評論