由于最近经常用到JavaScript数字类型,并遇到了一些小问题,因此对JavaScript数字类型进行了详细的总结。

在JavaScript经常用到整型和浮点型,经常涉及的操作主要有将字符串转换为数字类型、判断是否数字类型、比较数值。下面列出了一组变量,以实例方式来说明JavaScript数字类型的特性及相关函数/方法的使用:

var int1 = 19;
	var float1 = 19.00;
	var str1 = '23.5word';
	var str2 = 'wrod23.5';
	
	var int2 = 1e+400;
	var int3 = -1e+400;
	
	var int4 = 1e+500;
	
	var int5 = 3.14159265358979323846264338327950288419;
	var int6 = 141592653589793238462;

JavaScript中只有浮点型

准确地说是JavaScript不区分整型和浮点型, 所有下面的比较返回结果都是true:

return int1 == float1;
return int1 === float1;

用parseInt与parseFloat转换数字类型

parseInt(s[,radix])将字符串转换为整型, s参数是将要转换的字符串,可选参数radix指定基数,默认为10或16进制,如果转换失败则返回NaN.

parseInt(str1);//返回23
parseInt(str2);//转换失败,返回NaN

parseInt('10101', 2);//返回21, 将2进制10101转为10进制
parseInt("101014", 2));//21
parseInt("5101014", 2);//NaN

parseInt('0xF');//返回15, 以0x开头时默认为16进制

parseFloat(s)将字符串转换为浮点型, 如果转换失败则返回NaN.

parseFloat(str1);//返回23.5
parseFloat(str2);//返回NaN

NaN不等于任何值,包括它自己

在一些情况下,表单中只允许用户输入整型,不能输入字母,因此需要转换并判断输入值是否大于0,如:

<input type="text" id="yourAge" name="age" />
var age = parseInt(jQuery("#yourAge").val());

但是当用户输入的是字母,转换时返回值将是NaN,这时就不能用==来作比较了, 因为NaN不等于任何值,包括其自己。JavaScript提供了isNaN()函数来判断是否是NaN.

isNaN(parseInt(str2)); //返回true

另外也可以用以下方法来比较:

parseInt(str2).toString() == 'NaN';//返回true

无限大的数值Infinity和无限小的值-Infinity

如果数值大于1.79769313486231570e+308将等于Infinity, 负数则为-Infinity.

int2 === Infinity;//返回true
int2 === int4;//返回true

Number常用方法

Number.toFixed(d)用于限定小数点后的位数:

int5.toFixed(2);//3.14

Number.toExponential(d)格式化为指数形式,在指定小数点后的位数:

int6.toExponential(4);//1.4159e+20

Number.toPrecision(d)限定数字的有效数字:

int6.toPrecision(4);//1.416e+20