Debug-016-bigNumber的部分使用方法与属性

场景:最近做IoT项目的时候碰到一个问题,涉及到双精度浮点型的数据范围的校验问题。业务上其实有三种类型:int、float和double类型三种。他们的范围分别是:

//int
int: ['-2147483648', '2147483647'],

//float
float: ['-340282346638528860000000000000000000000', '340282346638528860000000000000000000000'],

//double (简写方式)

 double: ['-1.7976931348623157E+308', '1.7976931348623157E+308'],
  
// double(具体数值)
['-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'], // 阿里云的校验范围,精确到17976931348623157

我需要做的工作就是在选择完不同的类型时,校验用户的数在对应的范围里。

其实int和float类型还好吧,但是double这个数太大,超级大,我之前希望可以将这个具体的数可以确定到具体的值,而不是“1.7976931348623157E+308”这种,精确到小数点后16位。不过好在我去咨询了阿里云的IoT平台,提交工单问了这个问题之后,按照他们的来:

按照阿里这个最大的数据来校验即可。

那么也引出了今天的主要内容:bignumber.js

个人觉得这个还是很好用的,因为它最巧妙的在于将一个非常大的数,利用数组,将其分割成为若干的小数,这样就很好控制每一个部分,然后再配合定义好的正负和指数,就可以将这个数表示出来。

然后介绍一下其中的两个很好用的比较大小的函数:

不过首先需要给用户输入的值也经过BigNumber 处理

(1)isLessThan()

import BigNumber from 'bignumber.js'

//输入值
const bigVal = BigNumber(val)

//最小值
const bigMin = BigNumber(min)

//返回 true 或者 false
bigVal.isLessThan(bigMin)


console.log('这个数小于最小值?', bigVal.isLessThan(bigMin))

(2)isGreaterThan()

import BigNumber from 'bignumber.js'

//输入值
const bigVal = BigNumber(val)

//最大值
const bigMax = BigNumber(max)

//返回 true 或者 false
bigVal.isGreaterThan(bigMax)


console.log('这个数大于最大值?', bigVal.isGreaterThan(bigMax))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小白-RMS

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值