【零基础学JS - 25 】JavaScript中的 数字 Number

👨‍💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如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中的内置数字方法列表。

MethodDescription
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属性列表。

PropertyDescription
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YOLO大师

你的打赏,我的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值