每日一学—JavaScript数字

48 篇文章 5 订阅
28 篇文章 9 订阅

📚文章目录

🧷补充: 关于JavaScript数字

🔩精度

🔩数字和字符串连接

🔩数字字符串

🔩八进制和十六进制

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

🔩NaN - 非数字值

🔩数字可以是对象


接上文 

每日一学—JavaScript Number对象

🧷补充: 关于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 数字可以使用也可以不使用小数点来书写:

var pi=3.14;    // 使用小数点
var x=34;       // 不使用小数点

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

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

🔩精度

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

var x = 999999999999999; // x 为 999999999999999 
var y = 9999999999999999; // y 为 10000000000000000

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

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

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

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

🔩数字和字符串连接

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

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

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

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

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

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

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

var x = 10;
var y = 20;
var z = "结果为: " + x + y;

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

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

🔩数字字符串

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

var x = 100;         // x 是数字

var y = "100";       // y 是字符串

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

这将有效:

var x = "100";
var y = "10";
var z = x / y;       // z 将会为 10

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


🔩八进制和十六进制

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

var y = 0377;
var z = 0xFF;

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

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

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

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

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

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

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

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

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

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

typeof Infinity;     // 返回 "number"

🔩NaN - 非数字值

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

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

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

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

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

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

var x = NaN;
var y = 5;
var z = x + y;         // z 是 NaN

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

var x = NaN;
var y = "5";
var z = x + y;         // z 将会是 NaN5

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

typeof NaN;            // 返回 "number"

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


🔩数字可以是对象

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

var x = 123;

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

var y = new Number(123);

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

var x = 500;             
var y = new Number(500);

// (x == y) 为 true 因为 x 和 y 有相等的值

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

var x = 500;             
var y = new Number(500);

// (x === y)  false 因为 x 和 y 数据类型不同

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

var x = new Number(500);             
var y = new Number(500);

// (x == y)   false 因为他们各属不同的对象

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


参考来自

JavaScript数字—蝴蝶教程

JavaScript Number 对象 | 菜鸟教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黛琳ghz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值