数据类型,数值和运算

js数字

  1. JavaScript不区分整数值和浮点数值,JavaScript中的所有数字均用浮点数值表示。
  2. JavaScript中的算术运算在溢出(overflow)、下溢(underflow)或被零整除时不会报错。
  3. overflow === infinity
  4. Underflow === 0
  5. 被零整除在JavaScript并不报错:它只是简单的返回无穷大(Infinity)或负无穷大(-Infinity)
  6. 零除以零是没有意义的===NaN

 

二进制浮点数的编程语言中

 

1 var x = .3 - .2;
2 var y = .2 - .1;
3 
4 x == y;          //  ==> false: 两值不相等!
5 x == .1;         //  ==> false; 
6 y == .1;         //  ==> true;

 

 

 

  • 由于舍入误差,0.30.2之间的近似差值实际上并不等于0.20.1之间的近似差值。这个问题并不只在JavaScript中才会出现,理解这一点非常重要:在任何使用二进制浮点数的编程语言中都会有这个问题。

 

下面这些值会被转换成false所有其他值,包括所有对象(数组)都会转换成true

  • undefined
  • null
  • 0
  • -0
  • NaN
  • "" 

 

typeof可以检测给定变量的数据类型,可能的返回值有:

 

1 var s = "test";
2 var S = new String(s);
3 typeof(s);        // ==> "string"
4 typeof(S);       // ==> "object"

1. 'undefined'     --- 这个值未定义;

2. 'boolean'        --- 这个值是布尔值;

3. 'string'            --- 这个值是字符串;

4. 'number'         --- 这个值是数值;

6. 'function'        --- 这个值是函数;

5. 'object'           --- 这个值是对象或null;(单独判断)

 

数据类型转换

 

var n = 1 - "x";       // ==> NaN:字符串"x"无法转换为数字
n + " objects"          // ==> "NaN objects":NaN转换为字符串"NaN"
var n = 17;
binary_string = n.toString(2);                // 转换为 “10001”
octal_string = "0" + n.toString(8);         // 转换为 “021”
hex_string = "0x" + n.toString(16);       // 转换为 “0x11”


// parseInt()可以接收第二个可选参数,这个参数指定数字转换的基数,合法的取值范围是2~36:
parseInt("3 blind mice");          // ==> 3
parseInt("0xFF");                  // ==> 255
parseIntFloat(".1");               // ==> NaN:整数不能以"."开始
parseInt("11", 2);           // ==> 3
parseInt("077", 10);       // ==> 77

 

 

 

  • "=="等于运算符在判断两个值是否相等时会做类型转换,"==="恒等运算符在判断相等时并未做任何类型转换。

 

Number类为数字到字符串的类型转换场景定义了三个方法:

  • toFixed()根据小数点后的指定位数将数字转换为字符串,它从不使用指数计数法;
  • toExponential()使用指数计数法将数字转换为指数形式的字符串;
  • toPrecision()根据指定的有效数字位数将数字转换为字符串。如果有效数字的位数少于数字整数部分的位数,则转换成指数形式。

 

posted @ 2017-07-26 18:04  alan-alan  阅读(178)  评论(0编辑  收藏  举报