如何将长整数(作为字符串)转换为 Javascript 中的数字格式而不用 javascript 对其进行四舍五入?
var ThisInt = '9223372036854775808'
alert(ThisInt+'\r' +parseFloat(ThisInt).toString()+'\r' +parseInt(ThisInt).toString());
我需要在将其转换回字符串之前对其执行加法,并且如果可能的话,我宁愿不必将其切成两部分。
All Numbers https://tc39.github.io/ecma262/#sec-terms-and-definitions-number-value在 Javascript 中是 64 位“双”精度IEE754 http://en.wikipedia.org/wiki/IEEE_754-2008浮点。
因此,可以准确表示的最大正整数是 2^53 - 1。其余位保留用于指数。
您的数字正好是该数字的 1024 倍,因此会丢失 3 个小数位的精度。它根本无法被更准确地表示。
在 ES6 中可以使用Number.isSafeInteger( # )
测试一个数字是否在安全范围内:
var ThisInt = '9223372036854775808';
console.log( Number.isSafeInteger( parseInt( ThisInt ) ) );
还有一个大整数 http://silentmatt.com/biginteger/不过,可用的库应该能够提供帮助,并避免您必须自己完成所有的字符串和操作。
编辑2018/12现在有一个本地人BigInt
class(和新的文字语法)登陆 Chrome 和 NodeJS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)