number类型存在一个精度范围,超过长度范围则会出现精度问题,在计算、转换时出现精度丢失问题;
比如:
‘’+12345678901234.123456;//12345678901234.123
(12345678901234.123456).toString();//12345678901234.123
可以用Number.isSageInteger(value)来判断数字或字符串是否是js的安全数字;
所以前端对于大数值数字一般策略是保存为字符串类型;也可以引入大数值库进行操作,如bigInt、bignumber、bigDecimal等。
如果需要进行比较大小,需要用字符串的方式进行比较,禁止一切转换数据格式,可以用padStart/padEnd补全位数0再进行比较。