let num = '7236576431060140064'
console.log(+num, Number(num)) // 7236576431060140000
最后两位数丢了 这应该怎么处理
let num = '7236576431060140064'
console.log(+num, Number(num)) // 7236576431060140000
最后两位数丢了 这应该怎么处理
用bignumber.js或decimal.js
let BigNumber = require('bignumber.js');
let num = new BigNumber('7236576431060140064');
console.log(num.toString()); // "7236576431060140064"
或者:
let num = BigInt('7236576431060140064');
console.log(num.toString()); // "7236576431060140064"
JS中的 Number
类型只能存储数值在 -253-1 ~ 253-1 之间的数据:
const biggestInt = Number.MAX_SAFE_INTEGER; // (2**53 - 1) => 9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER; // -(2**53 - 1) => -9007199254740991
使用 BigInt()
来替代 Number()
就行。但 BigInt
是 ES2020 的内容,所以如果考虑兼容问题的话,最好使用大数运算的第三方库来处理,比如说:big.js (npm install big.js
),因为你需要转换为数值类型的多半也需要运算。
如果不涉及运算直接用字符串就好了。
相关阅读
BigInt - JavaScript | MDN
Number - JavaScript | MDN
MikeMcl/big.js: A small, fast JavaScript library for arbitrary-precision decimal arithmetic.
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
用 BigInt