我有一些我需要从强转换为数字的ID但是每当我使用parseInt()或Number()时,我得到一个双精度型十进制
1.01038295007818e+016.0
我只需要将字符串转换为数字。
答案 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);

对于您的问题,我相信parseInt
或Math.floor
可以正常工作,除非您的数字大于JavaScripts largest available number
答案 3 :(得分:1)
你得到的是科学记数法,因为你试图解析它的数字太大了。
Javascript中准确表示的最大整数是
9007199254740991
但是您的号码1.01038295007818e+016.0
是
10103829500781800