JavaScript 学习-19.Number 数字对象

前言

JavaScript 不区分整数和浮点数,只有一种Number 数字类型。

Number 数字类型

小数点后面的.0的数字会自动省略

var a = 12;    // 12
var b = 12.0;  // 12
var c = 12.00;  // 12
var d = 12.2;   // 12.2
var e = 12.20;  // 12.2

极大或极小的数字可通过科学(指数)计数法来写:

var y=123e5;    // 12300000
var z=123e-5;   // 0.00123

new Number() 定义数字对象

var x = 12;
var y = new Number(12);
console.log(typeof x); // number
console.log(typeof y); // object

x 和 y的值都是12,用==判断是相等的。但是===判断是false, 因为数据类型不一样,一个是number类型,一个是object类型

var x = 12;
var y = new Number(12);
console.log(x == y);  // true
console.log(x === y);  // false

运算

纯数字可以用加减乘除等运算符

var a = 2;
var b = 3;
var c1 = a + b;  // 5
var c2 = a - b;  // -1
var c3 = a * b;  // 6
var c4 = a / b;  // 0.6666666666666666
var c5 = a ** b;  // 8

数字和字符串

2个纯数字的字符串相加,会当字符串拼接

var a = 3;
var b = 4;
var x = a+b; // 7

// 两个纯数字字符串相加
var c = '3';
var d = '4';
var y = c + d; // 34

数字和字符串混加不会报错,会拼接成新的字符串

// 数字加字符串
var x = 10;
var y = "20";
var z = x + y;           // 1020(字符串)
console.log(z) ;

// 字符串加数字
var a = "10";
var b = 20;
var c = a + b ; // 1020(字符串)
console.log(c) ;

如下字符串加2个数字

var x = 10;
var y = 20;
var z = "The result is: " + x + y;  // The result is:1020

如果2个数字在前面,那么结果会不一样

var x = 10;
var y = 20;
var z = "hello";
var result = x + y + z; //30hello

因为JavaScript是从左往右计算,会先计算x+y的值得到30,再拼接hello得到30hello

纯数字的字符串做其它运算的时候,会当数字处理(加法运算当字符串处理)

var x = "100";
var y = "10";
var z = x / y;       // z 将是 10
console.log(z)

乘法运算

var x = "100";
var y = "10";
var z = x * y;       // z 将是 1000

减法运算

var x = "100";
var y = "10";
var z = x - y;      // z 将是 90

需注意的是,只有加法运算,数字类的字符串会被当字符串处理。

NaN 非数值

数字里面有个特殊的值NaN,它表示是一个非数字.

var x = 100 / "a";  //  NaN

函数 isNaN() 判断某个值是否是数字类型

var x = 100 / "a";  //  NaN
console.log(x);   //  NaN
console.log(isNaN(x));  // true

NaN和其它数字运算,得到的结果也会是NaN

var x = NaN;
var y = 20;
var z = x+y; // NaN
console.log(z);  // NaN
console.log(typeof z);  // number

NaN也是一个number类型。

Infinity 无穷大

Infinity (或 -Infinity)是 JavaScript 在计算数时超出最大可能数范围时返回的值。

一个数除以0,会得到无穷大

var x =  2 / 0;          // Infinity
var y = -2 / 0;          // -Infinity

console.log(x);  // Infinity
console.log(y);  // -Infinity
console.log(typeof x);  // number
console.log(typeof y);  // number

toString() 转字符串

数字类型转字符串类型

var x =  20;
var y = x.toString();
console.log(y);  // number
console.log(typeof x);  // string
console.log(typeof y);  // string

toString() 方法把数输出为十六进制、八进制或二进制

var myNumber = 128;
myNumber.toString(16);     // 返回 80
myNumber.toString(8);      // 返回 200
myNumber.toString(2);      // 返回 10000000

toFixed() 方法

toFixed() 方法用于保留几位小数,非常适合处理金额的问题,比如10.00这种数字,会被自动变成10,但是我们希望保留2位小数

var x = 10.00;
console.log(x); // 10
console.log(x.toFixed(2))   // 10.00

在保留小数点后面几位四舍五入的时候也会用到

var x = 10.0537;
console.log(x.toFixed(0))   // 10
console.log(x.toFixed(1))   // 10.1
console.log(x.toFixed(2))   // 10.05
console.log(x.toFixed(3))   // 10.054
console.log(x.toFixed(4))   // 10.0537
console.log(x.toFixed(5))   // 10.05370

toPrecision() 方法

toPrecision(number) 方法返回字符串,返回一个字符串,表示指定精度的数字。参数number的范围是1-100

var x = 10.0537;
console.log(x.toPrecision(1))   // 1e+1
console.log(x.toPrecision(2))   // 10
console.log(x.toPrecision(3))   // 10.1
console.log(x.toPrecision(4))   // 10.05
console.log(x.toPrecision(5))   // 10.054

把变量转换为数值

这三种 JavaScript 方法可用于将变量转换为数字:

  • Number() 方法
  • parseInt() 方法
  • parseFloat() 方法

Number() 可用于把 JavaScript 变量转换为数值:

x = true;
Number(x);        // 返回 1
x = false;     
Number(x);        // 返回 0
x = new Date();
Number(x);        // 返回 1404568027739
x = "10"
Number(x);        // 返回 10
x = "10 20"
Number(x);        // 返回 NaN
Number(new Date("2019-04-15"));    // 返回 1506729600000

parseInt() 方法

parseInt() 解析一段字符串并返回数值。允许空格。只返回首个数字

parseInt("10");         // 返回 10
parseInt("10.33");      // 返回 10
parseInt("10 20 30");   // 返回 10
parseInt("10 years");   // 返回 10
parseInt("years 10");   // 返回 NaN

parseFloat() 方法

parseFloat() 解析一段字符串并返回数值。允许空格。只返回首个数字

parseFloat("10");        // 返回 10
parseFloat("10.33");     // 返回 10.33
parseFloat("10 20 30");  // 返回 10
parseFloat("10 years");  // 返回 10
parseFloat("years 10");  // 返回 NaN
posted @ 2022-05-23 11:27  上海-悠悠  阅读(169)  评论(0编辑  收藏  举报