我想要像JavaScript BigNum和Numeral.js这样的库一起工作。
在Numeral.js中,我可以使用如下字符串:
var number = numeral('1110000000000000000000000000000000000000000000000000011100000000000000000011111111100');
但number.format();
的结果确实令人失望:
"1.11e+84"
有办法很好地格式化一个(真的)大数字吗?
编辑:,我不想只回避科学符号,这是一个错误的假设。我希望按照我想要的格式“很好”,例如:
var number = numeral(1000);
numeral.defaultFormat('$0,0.00');
number.format();
// '$1,000.00'
好吧,如果数字很大:
var number = numeral('100000000000000000000000000');
"$9.999999999999999e+25"
这真是一团糟。我知道JavaScript不能处理大数字,但我的问题是正是,因为那!我想要一个图书馆或解决这个问题的可能方法。
发布于 2017-07-07 16:39:49
如果您只支持最近的浏览器,我认为只使用Intl.NumberFormat就足够了。
虽然它在大数字上失去了精确性,但它将帮助您很容易地显示大数字和大货币:
var number = 1234567890123456789012345678901234567890;
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
// → 1.234.567.890.123.460.000.000.000.000.000.000.000.000,00 €
console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number));
// → ¥1,234,567,890,123,460,000,000,000,000,000,000,000,000
发布于 2017-07-07 15:40:34
您可以使用Intl.NumberFormat.prototype.format、String.prototype.slice()、String.prototype.concat()
var number = 2.9364136545300044e+24;
var n = new Intl.NumberFormat().format(number);
var res = n.slice(0, 9).concat(".").concat(n.slice(10, 12));
console.log(res);
发布于 2018-07-23 08:41:31
如果您希望处理和打印像'1110000000000000000000000000000000000000000000000000011100000000000000000011111111100‘这样的数字而不丢失精度,您可以:
示例代码:
var bn = new BugNumbers();
var longNumber = bn.of('1110000000000000000000000000000000000000000000000000011100000000000000000011111111100');
var longNumberPlusOne = longNumber.add(1);
// Should pring1110000000000000000000000000000000000000000000000000011100000000000000000011111111101
console.log(bn.format(longNumberPlusOne));
查看文档以获取详细信息:http://www.bignumbers.tech
https://stackoverflow.com/questions/28708787
复制相似问题