我有一些需要从强类型转换为数字的Ids,但是每当我使用parseInt()或Number()时,我都会得到一个双精度类型的decimal
1.01038295007818e+016.0我只需要将字符串转换为数字即可。
发布于 2016-11-13 14:25:32
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
发布于 2016-11-13 14:28:32
在javascript中可以表示的最大整数是9007199254740991,而不会损失任何精度。参见the javascript docs for more info。如果你想使用比这更大的整数,你需要使用像Big Integer这样的第三方库。
发布于 2016-11-13 14:19:43
有5种不同的方法可以将字符串转换为数字,如下所示:
parseInt(num);//默认方式(无基数)
parseInt(num,10);//带基数的parseInt (十进制)
parseFloat(num) //浮点
Number(num);// Number构造函数
~~num //按位注释
num /1 //下降一
num *1 //乘以1
num -0 //负0
+num //一元运算符"+“
你会发现Here的解释
对于
var s = parseInt("101038295007818e0160",10);
alert(s);O/P: 101038295007818e0160。
以及:
var s = parseInt(101038295007818e0160,10);
alert(s);O/P:1
对于
var s = parseInt("101038295007818e0160");
alert(s);O/P: 101038295007818e0160。
以及:
var s = parseInt(101038295007818e0160);
alert(s);O/P:1
希望它能对你有所帮助。
https://stackoverflow.com/questions/40571066
复制相似问题