如何将长数字串解析为一个数字?

时间:2016-11-13 06:03:32

标签: javascript

我有一些我需要从强转换为数字的ID但是每当我使用parseInt()或Number()时,我得到一个双精度型十进制

1.01038295007818e+016.0

我只需要将字符串转换为数字。

4 个答案:

答案 0 :(得分:4)

可以在javascript中表示的最大整数是9007199254740991,而不会丢失任何精度。见the javascript docs for more info。如果你想使用大于那个的整数,你需要使用像Big Integer这样的第三方库。

答案 1 :(得分:1)

将字符串转换为数字有5种不同的方法,如下所示:

parseInt函数(NUM); //默认方式(无基数)

parseInt(num,10); // parseInt with radix(decimal)

parseFloat(num)//浮点

号(NUM); //数字构造函数

~~ num //按位不是

num / 1 //一个人潜水

num * 1 //乘以一个

num - 0 //减去0

+ num //一元运算符" +"

你会找到解释Here

代表

var s = parseInt("101038295007818e0160",10); 
alert(s);

O / P:101038295007818e0160。

和for:

 var s = parseInt(101038295007818e0160,10); 
alert(s);

O / P:1

代表

 var s = parseInt("101038295007818e0160"); 
alert(s);

O / P:101038295007818e0160。

和for:

 var s = parseInt(101038295007818e0160); 
alert(s);

O / P:1

希望它会对你有所帮助。

答案 2 :(得分:1)

parseInt()函数获取字符串的第一个数字并删除小数位,它返回一个整数:



var a = parseInt("1.000350001");
var b = parseInt("456789.1");
var c = parseInt("20");

console.log(a);
console.log(b);
console.log(c);




Math.floor()方法将数字向下舍入到最接近的整数:



var d = Math.floor("1234.00101");

console.log(d);




Number()函数将字符串转换为表示字符串值的数字:



var e = Number("1000.12");

console.log(e);




对于您的问题,我相信parseIntMath.floor可以正常工作,除非您的数字大于JavaScripts largest available number

答案 3 :(得分:1)

你得到的是科学记数法,因为你试图解析它的数字太大了。

Javascript中准确表示的最大整数是

9007199254740991

但是您的号码1.01038295007818e+016.0

10103829500781800