👨💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个平台找到我!
🏆 本文收录于专栏: 零基础学JavaScript,包含JavaScript 基础知识,DOM相关知识,高级知识点,最新ES特性
————————————————————————
🔥 热门专栏:🥇 学透CSS: 全网阅读超百万,CSDN最强CSS专栏,精通CSS全属性,不做切图仔,从订阅本专栏开始!
🥇 SprinbBoot + Vue3 项目实战: 新鲜出炉的2023实战系列博客,配套视频,用心打磨,篇篇精品.持续更新,值得订阅!
文章目录
在JavaScript中,数字是原始数据类型。例如,
const a = 3;
const b = 3.13;
与其他一些编程语言不同,你不需要使用int、float等来专门声明整数或浮点数。
你可以使用指数表示法e来包含过大或过小的数字。例如,
const a1 = 5e9;
console.log(a1); //5000000000
const a2 = 5e-5;
console.log(a2); // 0.00005
数字也可以用十六进制表示法表示。例如,
const a = 0xff;
console.log(a); // 255
const b = 0x00 ;
console.log(b); // 0
使用 + 运算符进行数字运算
当使用 + 与数字一起使用时,它用于相加这些数字。例如,
const a = 4 + 9;
console.log(a); // 13
当 + 与数字和字符串一起使用时,它用于连接它们。例如,
const a = '4' + 9;
console.log(a); // 49
当数字字符串与其他数字操作一起使用时,数字字符串将被转换为数字。例如,
const a = '4' - 2;
console.log(a); // 2
const a = '4' / 2;
console.log(a); // 2
const a = '4' * 2;
console.log(a); // 8
JavaScript NaN
在JavaScript中,NaN(不是一个数字)是一个关键字,表示该值不是一个数字。
对数字值与字符串进行算术运算(除了+)会导致NaN。例如,
const a = 4 - 'hello';
console.log(a); // NaN
内置函数isNaN()可用于判断一个值是否为数字。例如,
const a = isNaN(9);
console.log(a); // false
const a = isNaN(4 - 'hello');
console.log(a); // true
当typeof操作符用于NaN值时,它会给出一个数字输出。例如,
const a = 4 - 'hello';
console.log(a); // NaN
console.log(typeof a); // "number"
JavaScript Infinity
在JavaScript中,当进行超过最大(或最小)可能的数字的计算时,将返回Infinity(或-Infinity)。例如,
const a = 2 / 0;
console.log(a); // Infinity
const a = -2 / 0;
console.log(a); // -Infinity
JavaScript BigInt
在JavaScript中,Number类型只能表示小于(2^53 - 1)和大于-(2^53 - 1)的数字。但是,如果你需要使用比这更大的数字,可以使用BigInt数据类型。
BigInt数字是通过在整数末尾添加n来创建的。例如,
// BigInt值
const value = 900719925124740998n;
// 添加两个大整数
const value1 = value + 1n;
console.log(value1); // 返回 "900719925124740999n"
注意:BigInt在较新版本的JavaScript中引入 ,会存在浏览器兼容性。
JavaScript数字存储在64位中
在JavaScript中,数字以64位格式IEEE-754存储,也称为“双精度浮点数”。
数字存储在64位中(数字存储在0到51位位置,指数存储在52到62位位置,符号存储在63位位置)。
数字 | 指数 | 符号 |
---|---|---|
52 bits(0 - 51) | 11 bits(52- 62) | 1 bit(63) |
精度问题
浮点数上的操作会导致一些意外的结果。例如,
const a = 0.1 + 0.2;
console.log(a); // 0.30000000000000004
结果应该是0.3而不是0.30000000000000004。这个错误是因为在JavaScript中,数字以二进制形式存储以在内部表示十进制数字。而十进制数无法以二进制形式精确表示。
要解决上述问题,你可以这样做:
const a = (0.1 * 10 + 0.2 * 10) / 10;
console.log(a); // 0.3
你还可以使用toFixed()方法。
const a = 0.1 + 0.2;
console.log(a.toFixed(2)); // 0.30
toFixed(2)将十进制数四舍五入为两个小数位。
const a = 9999999999999999
console.log(a); // 10000000000000000
注意:整数精确到15位。
数字对象
你还可以使用new关键字创建数字。例如,
const a = 45;
// 创建一个数字对象
const b = new Number(45);
console.log(a); // 45
console.log(b); // 45
console.log(typeof a); // "number"
console.log(typeof b); // "object"
注意:建议避免使用数字对象。使用数字对象会减慢程序的运行速度。
JavaScript数字方法
以下是JavaScript中的内置数字方法列表。
Method | Description |
---|---|
isNaN() | 确定传递的值是否为NaN |
isFinite() | 确定传递的值是否为有限数 |
isInteger() | 确定传递的值是否为整数 |
isSafeInteger() | 确定传递的值是否为安全整数 |
parseFloat(string) | 将数字浮点字符串转换为浮点数 |
parseInt(string, [radix]) | 将数字字符串转换为整数 |
toExponential(fractionDigits) | 以指数表示法返回数字的字符串值 |
toFixed(digits) | 以固定点表示法返回数字的字符串值 |
toPrecision() | 以指定精度返回数字的字符串值 |
toString([radix]) | 以指定基数返回字符串值 |
valueof() | 返回数字的值 |
toLocaleString() | 返回带有与语言相关的数字表示的字符串 |
例如,
// 检查a是否为整数
const a = 12;
console.log(Number.isInteger(a)); // true
// 检查b是否为NaN
const b = NaN;
console.log(Number.isNaN(b)); // true
// 显示两位小数
const d = 5.1234;
console.log(d.toFixed(2)); // 5.12
JavaScript数字属性
以下是JavaScript中的Number属性列表。
Property | Description |
---|---|
EPSILON | 返回两个可表示数字之间的最小间隔 |
MAX_SAFE_INTEGER | 返回最大安全整数 |
MAX_VALUE | 返回最大可能值 |
MIN_SAFE_INTEGER | 返回最小安全整数 |
MIN_VALUE | 返回最小可能值 |
NaN | 表示“不是一个数字”值 |
NEGATIVE_INFINITY | 表示负无穷大 |
POSITIVE_INFINITY | 表示正无穷大 |
prototype | 允许向数字对象添加属性 |
例如,
// 最大可能值
const a = Number.MAX_VALUE;
console.log(a); // 1.7976931348623157e+308
// 最大安全整数
const a = Number.MAX_SAFE_INTEGER;
console.log(a); // 9007199254740991
JavaScript Number() 函数
Number()函数用于将各种数据类型转换为数字。例如,
const a = '23'; // 字符串
const b = true; // 布尔值
// 转换为数字
const result1 = Number(a);
const result2 = Number(b);
console.log(result1); // 23
console.log(result2); // 1