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

...

 

posted @ 2020-06-12 13:01  Code~  阅读(200)  评论(0)    收藏  举报