每日一学—JavaScript数字

简介: JavaScript数字的学习

 🧷补充: 关于JavaScript数字

JavaScript只有一种类型的数字。可以使用或不使用小数来编写数字。JavaScript数字始终是64位浮点数 与许多其他编程语言不同,JavaScript没有定义不同类型的数字,如整数,短整数,长整数,浮点数等。JavaScript编号始终存储为双精度浮点数,符合国际IEEE 754标准。此格式以64位存储数字,其中数字(分数)存储在位0到51位,指数存储在位52到62位,符号存储在位63中:


值 (aka Fraction/Mantissa) 指数(Exponent) 符号(Sign)
52 bits (0 - 51)  11 bits (52 - 62) 1 bit (63)

JavaScript 数字可以使用也可以不使用小数点来书写:

varpi=3.14;    // 使用小数点varx=34;       // 不使用小数点

image.gif

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

vary=123e5;    // 12300000varz=123e-5;   // 0.00123

image.gif


🔩精度

整数(不使用小数点或指数计数法)最多为 15 位。

varx=999999999999999; // x 为 999999999999999 vary=9999999999999999; // y 为 10000000000000000

image.gif

小数的最大位数是 17,但是浮点运算并不总是 100% 准确:

varx=0.2+0.1; // 输出结果为 0.30000000000000004

image.gif

用乘法和除法解决上述问题

varx= (0.2*10+0.1*10) /10;       // x will be 0.3

image.gif


🔩数字和字符串连接

如果两个数字相加,结果将是一个数字:

varx=10;
vary=20;
varz=x+y;           // z 是 30 (一个数字)

image.gif

如果添加两个字符串,结果将是字符串连接:

varx="10";
vary="20";
varz=x+y;           // z 是 1020 (一个字符串)

image.gif

如果字符串和数字相加,结果将是字符串连接:

varx="10";
vary=20;
varz=x+y;           // z 是 1020 (一个字符串)

image.gif

一个常见的错误是期望这个结果为30:

varx=10;
vary=20;
varz="结果为: "+x+y;

image.gif

一个常见的错误是期望这个结果是102030:

varx=10;
vary=20;
varz="30";
varresult=x+y+z;

image.gif


🔩数字字符串

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

varx=100;         // x 是数字vary="100";       // y 是字符串

image.gif

JavaScript将尝试在所有数字操作中将字符串转换为数字:

这将有效:

varx="100";
vary="10";
varz=x/y;       // z 将会为 10

image.gif

注意:将上例的除法改成其他运算符(- ,* ,%)一样有效。如果是“+”号,那就被编译成字符串拼接。


🔩八进制和十六进制

如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。

vary=0377;
varz=0xFF;

image.gif

注意:绝不要在数字前面写零,除非您需要进行八进制转换。  

默认情况下,JavaScript 数字为十进制显示。

但是你可以使用 toString() 方法 输出16进制、8进制、2进制。

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

image.gif


🔩无穷(Infinity)和负无穷(-Infinity)

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

varmyNumber=2;
while (myNumber!=Infinity) {   // 执行直到无穷(Infinity)myNumber=myNumber*myNumber;
}

image.gif

除以0(零)也会产生Infinity:

varx=2/0;       // x 将会是 Infinityvary=-2/0;       // y 将会是 -Infinity

image.gif

Infinity的数据类型是一个数字:typeof Infinity返回number

typeofInfinity;     // 返回 "number"

image.gif


🔩NaN - 非数字值

NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

你可以使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

varx=1000/"Apple";
isNaN(x); // 返回 true,因为x不是数字vary=100/"1000";
isNaN(y); // 返回 false,因为x是一个数字

image.gif

除以0是无穷大,无穷大是一个数字:

varx=1000/0;
isNaN(x); // 返回 false

image.gif

提防NaN。如果NaN在数学运算中使用,结果也将是NaN:

varx=NaN;
vary=5;
varz=x+y;         // z 是 NaN

image.gif

或者结果可能是字符串串联:

varx=NaN;
vary="5";
varz=x+y;         // z 将会是 NaN5

image.gif

NaN的数据类型是一个数字:typeof NaN返回number:

typeofNaN;            // 返回 "number"

image.gif

注意:NaN == NaN 执行结果是 false,且NaN == ...后面无论是什么都返回false

image.gif


🔩数字可以是对象

通常,JavaScript数字是从文字创建的原始值:

var x = 123;

但是数字也可以用关键字new定义为对象:

var y = new Number(123);

使用==运算符时,相等的数字相等:

varx=500;             
vary=newNumber(500);
// (x == y) 为 true 因为 x 和 y 有相等的值

image.gif

使用===运算符时,相等的数字不相等,因为===运算符期望类型和值都相等。

varx=500;             
vary=newNumber(500);
// (x === y)  false 因为 x 和 y 数据类型不同

image.gif

甚至更糟。对象无法比较:

varx=newNumber(500);             
vary=newNumber(500);
// (x == y)   false 因为他们各属不同的对象

image.gif

注意(x==y)和(x===y)之间的差异。比较两个JavaScript对象将始终返回false。


参考来自

JavaScript数字—蝴蝶教程

JavaScript Number 对象 | 菜鸟教程

目录
相关文章
|
JavaScript
利用JS求1-100之间所有能被3整除的数字之和
利用JS求1-100之间所有能被3整除的数字之和
利用JS求1-100之间所有能被3整除的数字之和
|
JavaScript 前端开发 索引
丢失的数字使用JavaScript解决问题
丢失的数字使用JavaScript解决问题
127 0
|
存储 前端开发 算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
111 0
|
JavaScript
JS 实现给数字加三位一逗号间隔的两种方法
JS 实现给数字加三位一逗号间隔的两种方法
|
JSON JavaScript 数据格式
js将 一串数字1403149534转换为日期格式
js将 一串数字1403149534转换为日期格式
284 0
|
JavaScript 前端开发
JavaScript中数字常用方法
JavaScript中数字常用方法
|
JavaScript 前端开发 Shell
JavaScript题解剑指offer : 03. 数组中重复的数字
JavaScript题解剑指offer : 03. 数组中重复的数字
118 0
|
安全 JavaScript 前端开发
每日一学—JavaScript Number对象
JavaScript Number对象的学习
116 0
每日一学—JavaScript Number对象
|
JavaScript 前端开发 流计算
每日一学—JavaScript 字符串(String)对象
JavaScript 字符串(String)对象的学习
153 0
每日一学—JavaScript 字符串(String)对象
|
JavaScript 前端开发
每日一学—JavaScript Math对象
JavaScript Math对象的学习
121 0
每日一学—JavaScript Math对象