javaScript入门 - 数值
环境: Mac GoogleChorme
Number:
在JavaScript中,所有的数字以64位浮点数存储。比如:
1 === 1.0 // true
从实质上来说JavaScript是没有整数的,但为了整数计算,JaScript会自动把64位浮点数转换为32位整数,然后再进行运算。
1 + 2.0 // 3
JavaScript通过Number对象的MAX_VALUE和MIN_VALUE获取最大值,最小值。
Number.MAX_VALUE // 1.7976931348623157e+308 Number.MIN_VALUE // 5e-324
在JavaScript中,表示数值的范围约为 21024 ~ 2-1023
如果数值计算中数据过大,则会发生"正向溢出",则返回Infinity(无穷)。 如果发生"负向溢出",则直接返回0。
// 正向溢出 Math.pow(2, 1024); // Infinity // 负向溢出 // 示例1: Math.pow(2, -1075); // 0 // 示例2: 对0.5连续25次方,最终结果接近0,直接将其转为0 var x = 0.5; for(var i = 0; i < 25; i++) { x = x * x; } x // 0
对于Infinity来说,它大于除了NaN以外的一切数值。同样的-Infinity小于除了NaN以外的一切数值。
Infinity > Math.pow(2, 1023); // true Infinity > NaN // false // Infinity与0的运算, 等同于null 0 * Infinity // NaN 0 / Infinity // 0 Infinity / 0 // Infinity // Infinity与Infinity的运算 Infinity + Infinity // Infinity Infinity * Infinity // Infinity Infinity - Infinity // NaN Infinity / Infinity // NaN // Infinity与undefined的元算,都是NaN undefined +-*/ Infinity // NaN
一些方法:
parseInt: 用于将字符串转换为整数
// 将字符串转换为整数 parseInt('123') // 123 // 若参数不为字符串,则先转换为字符串,再转换 parseInt(1.23) // 1 // 若字符串存在空格,空格将自动删除 parseInt(' 81') // 81 // 转换字符间是依次转换,若遇到不能转换的字符将不再进行 parseInt(' 81xx111') // 81 parseInt('12.34') // 12 // 若字符串中的第一个字符不能转换数字,正负号除外,返回NaN parseInt('xx12.34') // NaN parseInt('-12.34') // -12 // 若字符串以 0x 或 0X 开头,则按照16进制转换 parseInt('0x10') // 16 // 若字符串以 0 开头,则按照10进制转换 parseInt('011') // 11 // 若参数是以科学计数法表示的,可能结果会很出乎意料 parseInt(1000000000000000000000.5) // 1 parseInt('1e+21') // 1 parseInt('8e-7') // 8 parseInt(0.0000008) // 8 // 若存在第二个参数,若不是数值,会自动转换为整数,0, undefined,null除外 // 若转换的整数必须在2~36之间,否则会返回NaN // 直接忽略0, null, undefined parseInt('10', 0) // 10 parseInt('10', null) // 10 parseInt('10', undefined) // 10 // 不在2~36范围中 parseInt('10', 1) // NaN parseInt('10', 37) // NaN
parseFloat: 将字符串转换为浮点数
// 将字符串转换为浮点数 parseFloat('3') // 3 parseFloat('3.14') // 3.14 parseFloat('.123') // 0.123 // 若字符串妇科科学计数法,则会进行相应的转换 parseFloat(1000000000000000000000.5) // 1e+21 parseFloat('1e+21') // 1e+21 parseFloat(0.0000008) // 8e-7 parseFloat('8e-7') // 8e-7 // 若字符串包含不能转为浮点数的字符,则不在转换 parseFloat('3.14xxx1') // 3.14 // 会自动过滤字符串前导的空格,换行符等 parseFloat(' \n\t\v\r12.34\n123') // 12.34 // 若字符串第一个字符不能转换为浮点数,则返回NaN parseFloat('[]') // NaN parseFloat(false) // NaN // 注意与Number相区分 pareseFloat(false) // NaN Number(false) // 0 parseFloat(null) // NaN Number(null) // 0
isNaN: 判定参数是否为NaN, 但是要注意下字符串
isNaN(NaN) // NaN isNaN(123) // false isNaN('123') // false // 不可转换为数字的字符串, 它不是NaN ,但是会返回true isNaN('hello') // true
isFinite: 判定某个值是否为数字,若是返回true,否则false
isFinite(Infinity) // false isFinite(NaN) // false isFinite('str') // false isFinite(NaN) // false isFinite({}) // false isFinite(12) // true isFinite('12') // true // 神奇的javaScript isFinite([]) // true isFinite('') // true
...

浙公网安备 33010602011771号