js 大数值数值精度问题

number类型存在一个精度范围,超过长度范围则会出现精度问题,在计算、转换时出现精度丢失问题;
比如:
‘’+12345678901234.123456;//12345678901234.123
(12345678901234.123456).toString();//12345678901234.123

可以用Number.isSageInteger(value)来判断数字或字符串是否是js的安全数字;
所以前端对于大数值数字一般策略是保存为字符串类型;也可以引入大数值库进行操作,如bigInt、bignumber、bigDecimal等。

如果需要进行比较大小,需要用字符串的方式进行比较,禁止一切转换数据格式,可以用padStart/padEnd补全位数0再进行比较。


版权声明:本文为FantasyBreaker原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。