JavaScript的数字Number(Number的创建、操作、属性、方法、特殊值的详细介绍)

本文深入讲解JavaScript中的数字类型,包括整数与小数的声明、科学计数法、不同进制数字的创建与转换,以及数值操作、特殊数值如NaN和Infinity的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript只有一种数字类型。 可以带小数,也可以不带小数。

声明创建十进制数字

创建整数与小数

var x=3;
var y=3.14;

alert(x);
alert(y);

可以使用科学表示法创建特大或特小数字
e5表示10的5次方:1010101010:100000

var x=123e5;
var y=123e-5;

alert(x);
alert(y);

声明创建不同进制的数字

如果数字常量以0x开头,则JavaScript会将其解释为十六进制。

var x = 0xFF;
document.write(x);
result:255

切勿写一个以零开头的数字(例如07)。
如果某些JavaScript版本以数字开头,则将数字解释为八进制。
默认情况下,JavaScript将数字显示为以10为基数的小数。
不过使用toString()方法输出数字可以设定输出的进制
十六进制为基数16。十进制为基数10。八进制为基数8。二进制为基数2。

JavaScript数字始终是64位浮点

与许多其他编程语言不同,JavaScript不会定义不同类型的数字的数据类型,例如整数int,短整数short,长整数long,浮点数float等。

在所有情况下,您都将获得“数字Number”这个数据类型。 不论您的值是整数(小还是大)还是十进制数(又是大还是小,需要科学记数法),JavaScript语言仅公开一种类型Number来表示所有这些值。

typeof 1234;
"number"
typeof 2e32;
"number"
typeof 12.34;
"number"
typeof 12.34e56;
"number"

精度

整数(不带句点或指数表示法的数字)的精度最高为15位数字。

var x = 999999999999999;   // x will be 999999999999999(精确到15位)
var y = 9999999999999999;  // y will be 10000000000000000(不精确)

小数位数的最大值是17,但是浮点算术并不总是100%准确的:
To solve the problem above, it helps to multiply and divide:

var x = 0.2,y=0.1;
alert(x+y);
alert(x*10+y*10)/10;

Number操作

WARNING !!
JavaScript uses the + operator for both addition(加法) and concatenation(串联).
Numbers are added(数字相加). Strings are concatenated.(字符串串联)

如果将两个数字相加,则结果将是一个数字:
如果添加两个字符串,结果将是字符串串联:
如果添加数字和字符串,结果将是字符串串联:
如果添加字符串和数字,结果将是字符串串联:

JavaScript解释器从左到右起作用(运算顺序从左到右)。

数字值是否相等的比较

== and ===
两个数字的值如果相等如果双等号比较返回true,全等号比较也返回true,

var mynum=255;
var y=new Number(255);

alert(mynum==y);//true
alert(mynum===y);//false

特殊Number:值为数字的字符串

JavaScript字符串可以包含数字内容:

var x = 100;         // x is a number

var y = "100";       // y is a string

JavaScript将尝试在所有数字运算中将字符串转换为数字:
数字字符串如果使用数字运算则会自动转换为数字

var x = "100";
var y = "10";
var z = x / y;       // z will be 10
alert(z);
alert(typeof z);//z is number here

两个包含数字的字符串相加仍然是字符串串联(乘,除,减的情况下,数字字符串都是作为数字参加操作)

var x = "100";
var y = "10";
var z = x + y;       //10010
alert(z);
alert(typeof z);//z is string here 

特殊Number:NaN(非数字)

NaN是JavaScript保留字,表示数字不是合法数字。
NaN is a number: typeof NaN returns number:

NaN与数字进行算术运算将导致NaN(非数字):
NaN与字符串相加返回字符串
您可以使用全局JavaScript函数isNaN()来确定值是否为数字:
提防NaN。 如果在数学运算中使用NaN,则结果也将为NaN:

特殊Number:Infinity(最大最小值)

Infinity(或-Infinity)是如果您计算的数字超出最大可能数,JavaScript将返回的值。

var myNum=2;
txt="";
while(myNum!=Infinity){
myNum=myNum*myNum;
txt+=myNum+"<br>";
};
document.write(txt);

result:
4
16
256
65536
4294967296
18446744073709552000
3.402823669209385e+38
1.157920892373162e+77
1.3407807929942597e+154
Infinity

除以0(零)也会生成无穷大:

var x=2/0;
var y=-2/0;
document.write(x);
document.write("<br>");
document.write(y);

result:
Infinity
-Infinity

Infinity的数据类型是Number

document.write(2/0);
document.write("<br>");
document.write(typeof (3/0));

result:
Infinity
number

数字可以是对象

通常,JavaScript数字是根据文字创建的原始值:
但是数字也可以使用关键字new定义为对象:

document.write(typeof mynum+"<br>");
document.write(typeof y+"<br>");

result:
number
object

Number方法

原始值(例如3.14或2014)不能具有属性和方法(因为它们不是对象)。
但是对于JavaScript,方法和属性也可用于原始值,因为JavaScript在执行方法和属性时会将原始值视为对象。

toString()方法:将数字转换为字符串

var x=123;
var xx=x.toString();
alert(typeof xx);

所有数字Number方法均可用于任何类型的数字(文字,变量或表达式):

toExponential() 转换成指数表示法

var x=9.786;

alert(x.toExponential(2));

var y=9786.83;
alert(y.toExponential(3));

toExponential的参数是可选的。 如果未指定,JavaScript将不会舍入该数字。

toFixed()方法
toFixed()返回一个字符串,该数字用指定的小数位数书写:

toPrecision()方法
toPrecision()返回一个字符串,该字符串具有指定长度的数字:(用于精确数字的总长度)

valueOf方法
数字可以是原始值,也可以是对象,所以valueOf可以获取数字对象的值
The valueOf() method is used internally in JavaScript to convert Number objects to primitive values.
There is no reason to use it in your code.

所有的数据类型都有valueOf方法和toString()方法

var x=new Number("200");
alert(x);
alert(x.valueOf());//这个方法似乎有点多此一举

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

  1. Number()方法
  2. parseInt()方法
  3. parseFloat()方法

这些方法不是数字方法,而是全局JavaScript方法。

Number()可用于将JavaScript变量转换为数字(If the number cannot be converted, NaN (Not a Number) is returned.):
Number()也可以将日期转换为数字:

parseInt()解析字符串并返回整数。 允许有空格。 仅返回第一个数字:
parseFloat()解析字符串并返回数字。 允许有空格。 仅返回第一个数字:

Number属性

  • 非数字 NaN
  • 无穷大 MAX_VALUE
  • 无穷小 MIN_VALUE
  • 无穷大溢出 Infinity
  • 无穷小溢出 -Infinity
var min=Number.MIN_VALUE;
document.write(min+"<br>");
var x=Number.MAX_VALUE;
document.write(x+"<br>");
var y=1/0;
document.write(y+"<br>");
var z=-1/0;
document.write(z+"<br>");

/*
result:
5e-324
1.7976931348623157e+308
Infinity
-Infinity
*/

Number属性不能用于变量

Number属性属于JavaScript的Number对象包装器,称为Number。
这些属性只能作为Number.MAX_VALUE访问。
使用myNumber.MAX_VALUE(其中myNumber是变量,表达式或值)将返回未定义undefined:

var x=123;
alert(x.MAX_VALUE);//undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值