最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用big.js解決JavaScript浮點(diǎn)數(shù)精度丟失問題

 更新時(shí)間:2023年12月21日 11:25:17   作者:小綿楊Yancy  
最近在項(xiàng)目中涉及到金額從元轉(zhuǎn)為分(乘100即可),發(fā)現(xiàn)乘法居然也會(huì)有精度丟失的問題,關(guān)于浮點(diǎn)數(shù)計(jì)算精度丟失是很多語言都存在的問題,本文給大家分享使用big.js解決JavaScript浮點(diǎn)數(shù)精度丟失問題,感興趣的朋友一起看看吧

一、精度丟失

關(guān)于浮點(diǎn)數(shù)計(jì)算精度丟失是很多語言都存在的問題,例如比較著名的:

0.1 + 0.2 === 0.30000000000000004

最近在項(xiàng)目中涉及到金額從元轉(zhuǎn)為分(乘100即可),發(fā)現(xiàn)乘法居然也會(huì)有精度丟失的問題:

19.9 * 100 === 1989.9999999999998

因?yàn)樯婕暗搅私痤~,所以一定不能出現(xiàn)這樣的問題??梢灾苯邮褂?

Number(Number(19.9 * 100).toFixed()) === 1990

但其實(shí)toFixed()方法也會(huì)造成的精度丟失,后來發(fā)現(xiàn),有一個(gè)專門處理js精度問題的庫:http://mikemcl.github.io/big.js/

二、Big.js

安裝:

npm install big.js

項(xiàng)目中引入:

import Big from 'big.js';

使用Big構(gòu)造函數(shù)可以創(chuàng)建一個(gè)Big對(duì)象,調(diào)用對(duì)應(yīng)的方法即可實(shí)現(xiàn)我們的計(jì)算需求。

let x = new Big(0.1)

在這里插入圖片描述

注意最后我們需要使用toNumber方法重新將Big對(duì)象轉(zhuǎn)為數(shù)字。

2.1 加

Big對(duì)象上的plus方法實(shí)現(xiàn)加運(yùn)算。

0.1 + 0.2                  // 0.30000000000000004
x = new Big(0.1)
y = x.plus(0.2).toNumber()            // 0.3
Big(0.7).plus(x).plus(y).toNumber()   // 1.1

2.2 減

Big對(duì)象上的minus方法實(shí)現(xiàn)減運(yùn)算。

0.3 - 0.1                  // 0.19999999999999998
x = new Big(0.3)
x.minus(0.1).toNumber()               // 0.2

2.3 乘

Big對(duì)象上的times方法實(shí)現(xiàn)乘運(yùn)算。

0.6 * 3                    // 1.7999999999999998
x = new Big(0.6)
y = x.times(3).toNumber()             // 1.8
Big('7e+500').times(y).toNumber()     // Infinity
Big('7e+500').times(1.8).toString()   // '1.26e+501'

2.4 除

Big對(duì)象上的div方法實(shí)現(xiàn)除運(yùn)算。

x = new Big(355)
y = new Big(113)
x.div(y).toNumber()                   // 3.14159292035398230088
Big.DP = 2
x.div(y).toNumber()                   // 3.14
x.div(5).toNumber()                   // 71

DP:涉及除法的操作結(jié)果的最大小數(shù)位數(shù)。它僅與 div 和 sqrt 方法相關(guān),以及當(dāng)指數(shù)為負(fù)時(shí)與 pow 方法相關(guān)。

2.5 指數(shù)

Big對(duì)象上的pow方法實(shí)現(xiàn)指數(shù)運(yùn)算。

Math.pow(0.7, 2)           // 0.48999999999999994
x = new Big(0.7)
x.pow(2)                   // '0.49'
Big.DP = 20
Big(3).pow(-2)             // '0.11111111111111111111'
new Big(123.456).pow(1000).toString().length     // 5099
new Big(2).pow(1e+6)       // Time taken (Node.js): 9 minutes 34 secs.

到此這篇關(guān)于如何使用big.js解決JavaScript浮點(diǎn)數(shù)精度丟失問題的文章就介紹到這了,更多相關(guān)js浮點(diǎn)數(shù)精度丟失內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js實(shí)現(xiàn)圓盤記速表

    js實(shí)現(xiàn)圓盤記速表

    本文分享了一個(gè)利用AmCharts制作的汽車速度計(jì)速表,通過設(shè)置不同的速度(數(shù)字)來動(dòng)態(tài)改變計(jì)速表的指針。使用也非常簡單,下面給出方法。
    2015-08-08
  • js實(shí)現(xiàn)輪播圖自動(dòng)切換

    js實(shí)現(xiàn)輪播圖自動(dòng)切換

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)輪播圖自動(dòng)切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS數(shù)組求和的常用方法實(shí)例小結(jié)

    JS數(shù)組求和的常用方法實(shí)例小結(jié)

    這篇文章主要介紹了JS數(shù)組求和的常用方法,結(jié)合實(shí)例形式總結(jié)分析了javascript常見的遍歷、循環(huán)、歸并等數(shù)組操作相關(guān)技巧,需要的朋友可以參考下
    2019-01-01
  • 使用純JS實(shí)現(xiàn)checkbox的框選效果(鼠標(biāo)拖拽多選)

    使用純JS實(shí)現(xiàn)checkbox的框選效果(鼠標(biāo)拖拽多選)

    最近做了一個(gè)用js實(shí)現(xiàn)鼠標(biāo)拖拽多選的功能,于是整理了一下思路,寫了一個(gè)小demo,下面這篇文章主要給大家介紹了關(guān)于如何使用純JS實(shí)現(xiàn)checkbox的框選效果(鼠標(biāo)拖拽多選)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • JavaScript使用Canvas繪制一個(gè)驗(yàn)證碼組件

    JavaScript使用Canvas繪制一個(gè)驗(yàn)證碼組件

    驗(yàn)證碼,這一日常伴隨我們的要素,是我們在線交互的重要安全保障,你的手機(jī)短信里是否被它占據(jù)半壁江山,今天我們就來聊聊如何在網(wǎng)頁上實(shí)現(xiàn)一個(gè)簡單的驗(yàn)證碼組件,需要的朋友可以參考下
    2023-09-09
  • 在IE中調(diào)用javascript打開Excel的代碼(downmoon原作)

    在IE中調(diào)用javascript打開Excel的代碼(downmoon原作)

    在IE中調(diào)用javascript打開Excel的代碼(downmoon原作)...
    2007-04-04
  • layui輸入框只允許輸入中文且判斷長度的例子

    layui輸入框只允許輸入中文且判斷長度的例子

    今天小編就為大家分享一篇layui輸入框只允許輸入中文且判斷長度的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 基于webpack 實(shí)用配置方法總結(jié)

    基于webpack 實(shí)用配置方法總結(jié)

    下面小編就為大家?guī)硪黄趙ebpack 實(shí)用配置方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Javascript實(shí)現(xiàn)簡易導(dǎo)航欄

    Javascript實(shí)現(xiàn)簡易導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了Javascript實(shí)現(xiàn)簡易導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • js操作iframe的一些方法介紹

    js操作iframe的一些方法介紹

    本篇文章介紹了js操作iframe的一些方法的實(shí)例代碼與步驟,有需要的朋友可以參考一下
    2013-06-06

最新評(píng)論

华阴市| 仙居县| 栾川县| 巴彦县| 上犹县| 崇仁县| 增城市| 渭源县| 三台县| 建宁县| 安新县| 措勤县| 永靖县| 凌海市| 仲巴县| 云安县| 法库县| 民勤县| 浏阳市| 射阳县| 普安县| 鄄城县| 杨浦区| 安顺市| 鞍山市| 寿光市| 定边县| 来凤县| 富平县| 望都县| 安吉县| 青海省| 新绛县| 京山县| 巴塘县| 汉沽区| 莲花县| 灵宝市| 年辖:市辖区| 莱西市| 惠东县|