javascript 数字
javascript 只有一种数值类型。书写数值时带不带小数点均可。
1. javascript 数值
书写 javascript 数值既可以带小数点,也可以不带:
范例
var x = 3.14; // 带小数点的数值 var y = 3;// 不带小数点的数值
超大或超小的数可通过科学计数法来写:
范例
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
2. javascript 数值始终是 64 位的浮点数
与许多其他编程语言不同,javascript 不会定义不同类型的数,比如整数、短的、长的、浮点的等等。
javascript 数值始终以双精度浮点数来存储,根据国际 ieee 754 标准。
此格式用 64 位存储数值,其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号:
值(aka fraction/mantissa) | 指数 | 符号 |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
3. 精度
整数(不使用指数或科学计数法)会被精确到 15 位。
范例
var x = 999999999999999; // x 将是 999999999999999 var y = 9999999999999999; // y 将是 10000000000000000
小数的最大数是 17 位,但是浮点的算数并不总是 100% 精准:
范例
var x = 0.2 + 0.1; // x 将是 0.30000000000000004
使用乘除法有助于解决上面的问题:
范例
var x = (0.2 * 10 + 0.1 * 10) / 10;// x 将是 0.3
4. 数字和字符串相加
警告!!
javascript 的加法和级联(concatenation)都使用 + 运算符。
数字用加法。字符串用级联。
如果您对两个数相加,结果将是一个数:
范例
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(一个字符串)
如果您对一个字符串和一个数字相加,结果也是字符串级联:
范例
var x = "10"; var y = 20; var z = x + y; // z 将是 1020(字符串)
常见的错误是认为结果应该是 30:
范例
var x = 10; var y = 20; var z = "the result is: " + x + y;
常见的错误是认为结果应该是 102030:
范例
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
javascript 从左向右进行编译。
因为 x 和 y 都是数,10 + 20 将被相加。
因为 z 是字符串,30 + "30" 被级联。
5. 数字字符串
javascript 字符串可以拥有数字内容:
var x = 100; // x 是数字 var y = "100";// y 是字符串
在所有数字运算中,javascript 会尝试将字符串转换为数字:
该例如此运行:
var x = "100"; var y = "10"; var z = x / y;// z 将是 10
该例也将如此运行:
var x = "100"; var y = "10"; var z = x * y;// z 将是 1000
该例如此运行:
var x = "100"; var y = "10"; var z = x - y;// z 将是 90
但是该例不会如上例般运行:
var x = "100"; var y = "10"; var z = x + y;// z 不会是 110(而是 10010)
在最后一个例子中,javascript 用 + 运算符对字符串进行了级联。
6. nan - 非数值
nan 属于 javascript 保留词,指示某个数不是合法数。
尝试用一个非数字字符串进行除法会得到 nan(not a number):
范例
var x = 100 / "apple"; // x 将是 nan(not a number)
不过,假如字符串包含数值,则结果将是数:
范例
var x = 100 / "10"; // x 将是 10
您可使用全局 javascript 函数 isnan() 来确定某个值是否是数:
范例
var x = 100 / "apple"; isnan(x); // 返回 true,因为 x 不是数
要小心 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"
- JavaScript 使用
- JavaScript 运算符
- JavaScript 算术
- JavaScript 数据类型
- JavaScript 函数
- JavaScript 对象
- JavaScript 字符串
- JavaScript 数字
- JavaScript 数值方法
- JavaScript 数组
- JavaScript 日期
- JavaScript 日期格式化
- JavaScript 设置日期方法
- JavaScript Math 对象
- JavaScript 随机
- JavaScript Break 和 Continue
- JavaScript 错误处理 - Throw 和 Try to Catch
- JavaScript 作用域
- JavaScript 最佳实践
- JavaScript 性能