为啥要弄这玩意?
最近做数值游戏,需要用到很大的数字,在前端大数字会自动变成e的科学计数法。
有啥问题?
问题:
1. 在传递给服务端时,服务端因为不能处理大数字(怎么就处理不了?!),就想要我传字符串给他,
但是大数字会变成科学计数法的字符串"4e+23"之类给服务端,而不是"400000000000000..."理想的数字字符串。
2. 在保存本地localStorage时,因为key-value的值只能是字符串,所以把num.toString()后也会变成科学计数法保存。
但是可以用parseFloat还原科学计数法的大数字,这样还好。(不能用parseInt还原)。
3. 尝试去github、csdn找BigDecimal之类的处理大数字的Javascript或Typescript版本,但是用不了。
在常规H5里还好, 但是放到微信小游戏里就不行,会Decimal is not defined之类, 增加了window和修改wx.config配置文件也不行。急死个人哎。
解决方案:
1. 因为调试第三方库死活调不通,反正数值游戏在大数值以后,小数就非常微乎其微了,损失一些小数字也无所谓。而且项目急着上线,卧槽加班到很晚。
2. 于是写了下面的一个很搓的方法。判断e的数量,来手动给数字字符串+"0" &