js 浮点数计算精度问题解决汇总

在用js中,在计算浮点数的时候,加减乘除,取余等,你会神奇的发现 0.1 + 0.2 = 0.300000004;类似这样的情况(至于为什么,自己去百度一下就OK了),这里只提供方案:

先下载插件;number-precision(npm 上自己找)

 

Methods

 

NP.strip(num)         // strip a number to nearest right number

NP.plus(num1, num2, num3, ...)   // addition, num + num2 + num3, two numbers is required at least.

NP.minus(num1, num2, num3, ...)  // subtraction, num1 - num2 - num3

NP.times(num1, num2, num3, ...)  // multiplication, num1 * num2 * num3

NP.divide(num1, num2, num3, ...) // division, num1 / num2 / num3

NP.round(num, ratio)  // round a number based on ratio

使用

 

import NP from 'number-precision'

NP.strip(0.09999999999999998); // = 0.1

NP.plus(0.1, 0.2);             // = 0.3, not 0.30000000000000004

NP.plus(2.3, 2.4);             // = 4.7, not 4.699999999999999

NP.minus(1.0, 0.9);            // = 0.1, not 0.09999999999999998

NP.times(3, 0.3);              // = 0.9, not 0.8999999999999999

NP.times(0.362, 100);          // = 36.2, not 36.199999999999996

NP.divide(1.21, 1.1);          // = 1.1, not 1.0999999999999999

NP.round(0.105, 2);            // = 0.11, not 0.1

 

运用案例:判断小数能否被整除,

200.61能否被0.01整除,需要先放大100倍,再取余

np.times(200.61, 100) % np.times(0.01, 100) !== 0

// true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值