JS中使用bignumber处理高精度小数运算
创作时间:
作者:
@小白创作中心
JS中使用bignumber处理高精度小数运算
引用
CSDN
1.
https://blog.csdn.net/zhouzuoluo/article/details/112980462
在JavaScript开发中,经常会遇到浮点数运算精度丢失的问题,比如0.1+0.2 = 0.30000000000000004。为了解决这类问题,可以使用bignumber.js库来处理高精度小数运算。
解决方式:引用bignumber.js用于数字精度要求较高的计算
1、安装或引用
你可以通过以下方式获取bignumber.js:
- 下载地址:https://github.com/MikeMcl/bignumber.js/releases
- 或者使用npm命令安装:
安装完成后,可以通过以下方式引用:npm install bignumber.js --saveimport BigNumber from 'bignumber.js'
bignumber.js API地址: http://mikemcl.github.io/bignumber.js/
2、静态方法
clone() & config() 可以为BigNumber构造函数设置参数
var BN = BigNumber.clone() //生成一个独立的BigNumber构造函数 BN.config({DECIMAL_PLACES:4, ROUNDING_MODE: 4}) //设置小数点、舍入模式 BN(1).div(3).toNumber() //0.3333,注意跟上面计算结果的区别maximum & minimum & sum & random
import BigNumber from 'bignumber.js' export default { name: 'landing-page', components: { SystemInformation }, created(){ let x = new BigNumber(0.1) let x2 = new BigNumber() let y = x.plus(0.2) console.log('8888-----',0.1+0.2); // 0.30000000000000004 console.log('9999--plus---',y.toString()); // 0.3 console.log('9999--maximum---',BigNumber.maximum(2,12,32.21,222.11,76).toString()); // 222.11 console.log('9999--sum---',BigNumber.sum(1,2,3,4,5).toString()); // 15 console.log('9999--random---',BigNumber.random(10).toString()); // 0.4046523741 } }
3、实例方法
- 加法 .plus(n [, base]) ⇒ BigNumber
- 减法 .minus(n [, base]) ⇒ BigNumber
- 乘法 .times(n [, base]) ⇒ BigNumber
- 除法 .div(n [, base]) ⇒ BigNumber
- 取模/取余: .mod(n [, base])
- 指数运算: .pow(n [, m]) ⇒ BigNumber
- 开平方:.sqrt() ⇒ BigNumber
- 比较大小: .comparedTo(n [, base]) ⇒ number
- 精度调整 .dp([dp [, rm]]) ⇒ BigNumber|number
- 取整:.integerValue([rm]) ⇒ BigNumber
- 有效数字 .sd([d [, rm]]) ⇒ BigNumber|number
- 保留小数位数 .toFixed([dp [, rm]]) ⇒ string
let x = 6.2000, y = 3.10, z = 9;
console.log('9999--plus---',BigNumber(0.7).plus(x).plus(y).toString()); // 10
console.log('9999--minus---',BigNumber(x).minus(2).toString()); // 4.2
console.log('9999--times---',BigNumber(x).times(10).toString()); // 62
console.log('9999--div---',BigNumber(x).div(y).toString()); // 2
console.log('9999--mod---',BigNumber(x).mod(y).toString()); // 0
console.log('9999--pow---',BigNumber(x).pow(-2).toString()); // 0.0260145681581685744
console.log('9999--sqrt---',BigNumber(z).sqrt().toString()); // 3
console.log('9999--toFixed---',BigNumber(x).toFixed(1).toString()); // 6.2
console.log('9999--integerValue---',BigNumber(x).integerValue(1).toString()); // 6
console.log('9999--sd---',BigNumber(x).sd().toString()); // 2
console.log('9999--comparedTo---',BigNumber(x).comparedTo(y).toString()); //1, 1为大于,-1为小于,0为等于
热门推荐
美院毕业生就业观察:央美、国美、广美、川美毕业生就业率均超八成
新津太平老街:年轻与传统的精致结合,焕发文旅活力
NBA频道全面解析:球员动态、赛季预测与精彩赛事回顾一网打尽
中国10 大万能火锅汤底
封神第二部电影:奇幻史诗的续章与深度解析
超标电动自行车“大限”已至 江苏多地出台政策鼓励更换新国标车辆
皮肤肿物别忽视!教你如何识别与应对
李祖村“农创客” ,点燃乡村振兴新引擎
包子开锅蒸多长时间能熟了?
AMRAP 常规:全身锻炼效率
你必须观看的十大社会评论动漫
人的门牙有什么讲究吗?门牙的大小|整齐度|缝隙大等都可通过美学修复牙齿来改善
姐弟恋现象的生理、心理与社会解析
北斗高精度时频服务器助力铁路高效运行
多条高铁线路实行市场化票价机制!官方回应→
游戏手柄进化史:从摇杆到触摸,玩家体验如何升级?
沙棘原浆的功效与作用
买基围虾怎么挑选
偏瘫康复中,运动疗法有哪些具体的实施步骤?
文化中国行|一句话叫响一座城!旅游目的地形象与品牌塑造的秘籍
减肥期间可以食用牛油果油,但需控制摄入量
清空收件箱:每天17分钟搞定邮件管理
秦始皇陵为何至今都不敢挖?专家核磁扫描后,发现墓中不一般
不同季节的职场着装有哪些要点需要注意
肇庆清真烧鹅制作技艺 百年岁月沉淀粤式清真美味
咽喉炎的五种有效治疗方法
中国邮局上班时间详解 —— 如何查询和确认邮政服务时间
电影《阿Q正传》的深度观察
孙子兵法在现代企业竞争中的智慧应用
蝴蝶的人工养殖与加工需要怎么做,需要哪些东西呢?看完就懂了!