菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

JS 教程

JS 首页 JS 简介 JS 放置位置 JS 输出 JS 语句 JS 语法 JS 注释 JS 变量 JS Let JS Const JS 运算符 JS 算术 JS 赋值 JS 数据类型 JS 函数 JS 对象 JS 对象属性 JS 对象方法 JS 对象显示 JS 对象构造函数 JS 事件 JS 字符串 JS 字符串方法 JS 字符串搜索 JS 字符串模板 JS 数字 JS BigInt JS 数字方法 JS 数字属性 JS 数组 JS 数组方法 JS 数组搜索 JS 数组排序 JS 数组迭代 JS 数组 Const JS 日期 JS 日期格式 JS 日期获取方法 JS 日期设置方法 JS 数学 JS 随机数 JS 布尔值 JS 比较 JS If Else JS Switch JS For 循环 JS For In 循环 JS For Of 循环 JS While 循环 JS Break JS 可迭代对象 JS Set JS Set 方法 JS Map JS Map 方法 JS Typeof JS 类型转换 JS 解构 JS 位运算 JS RegExp JS 优先级 JS 错误 JS 作用域 JS 变量提升 JS 严格模式 JS this 关键词 JS 箭头函数 JS 类 JS 模块 JS JSON JS 调试 JS 风格指南 JS 最佳实践 JS 常见错误 JS 性能 JS 保留字

JS 版本

JS 版本 JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS 2019 JS 2020 JS 2021 JS 2022 JS 2023 JS 2024 JS IE / Edge JS 历史

JS 对象

对象定义 对象原型 对象方法 对象属性 对象 Get / Set 对象保护

JS 函数

函数定义 函数参数 函数调用 函数 Call 函数 Apply 函数 Bind 函数闭包

JS 类

类入门 类继承 类静态

JS 异步

JS 回调 JS 异步 JS Promises JS Async/Await

JS HTML DOM

DOM 入门 DOM 方法 DOM Document DOM 元素 DOM HTML DOM 表单 DOM CSS DOM 动画 DOM 事件 DOM 事件监听器 DOM 导航 DOM 节点 DOM 集合 DOM 节点列表

JS Browser BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS Web APIs

Web API 入门 Web 表单 API Web History API Web Storage API Web Worker API Web Fetch API Web Geolocation API

JS AJAX

AJAX 入门 AJAX XMLHttp AJAX Request AJAX Response AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用 AJAX 示例

JS JSON

JSON 入门 JSON 语法 JSON vs XML JSON 数据类型 JSON 解析 JSON Stringify JSON 对象 JSON 数组 JSON 服务器 JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery 选择器 jQuery HTML jQuery CSS jQuery DOM

JS Graphics

JS Graphics JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

JS 示例

JS 示例 JS HTML DOM JS HTML 输入 JS HTML 对象 JS HTML 事件 JS 浏览器 JS 编辑器 JS 练习 JS 测验 JS 网站 JS 面试准备 JS Bootcamp JS 证书

JS 参考

JavaScript 对象 HTML DOM 对象


JavaScript 数字


JavaScript 只有一种数字类型。数字可以带小数或不带小数书写。


示例

let x = 3.14;    // 带小数的数字
let y = 3;       // 不带小数的数字

自己动手试一试 »

特大或特小的数字可以使用科学(指数)记数法书写

示例

let x = 123e5;    // 12300000
let y = 123e-5;   // 0.00123

自己动手试一试 »


JavaScript 数字始终是 64 位浮点数

与许多其他编程语言不同,JavaScript 没有定义不同类型的数字,例如整数、短整数、长整数、浮点数等。

JavaScript 数字始终存储为双精度浮点数,遵循国际 IEEE 754 标准。

这种格式将数字存储在 64 位中,其中数字(分数)存储在 0 到 51 位,指数存储在 52 到 62 位,符号存储在 63 位

值(也称为分数/尾数) 指数 符号
52 位 (0 - 51)  11 位 (52 - 62) 1 位 (63)

整数精度

整数(不带小数点或指数记数法的数字)精确到 15 位。

示例

let x = 999999999999999;   // x 将是 999999999999999
let y = 9999999999999999;  // y 将是 10000000000000000
自己动手试一试 »

小数的最大位数是 17 位。

浮点精度

浮点算术并非总是 100% 准确

let x = 0.2 + 0.1;

自己动手试一试 »

为了解决上述问题,乘以和除以会有帮助

let x = (0.2 * 10 + 0.1 * 10) / 10;
自己动手试一试 »


数字和字符串相加

警告!!

JavaScript 使用 + 运算符进行加法和字符串连接。

数字相加。字符串连接。

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

示例

let x = 10;
let y = 20;
let z = x + y;
自己动手试一试 »

如果您将两个字符串相加,结果将是字符串连接

示例

let x = "10";
let y = "20";
let z = x + y;
自己动手试一试 »

如果您将一个数字和一个字符串相加,结果将是字符串连接

示例

let x = 10;
let y = "20";
let z = x + y;
自己动手试一试 »

如果您将一个字符串和一个数字相加,结果将是字符串连接

示例

let x = "10";
let y = 20;
let z = x + y;
自己动手试一试 »

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

示例

let x = 10;
let y = 20;
let z = "结果是: " + x + y;
自己动手试一试 »

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

示例

let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
自己动手试一试 »

JavaScript 解释器从左到右执行。

首先,由于 x 和 y 都是数字,所以计算 10 + 20。

然后,由于 z 是字符串,所以连接 30 + "30"。


数字字符串

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

let x = 100;         // x 是一个数字

let y = "100";       // y 是一个字符串

JavaScript 将尝试在所有数字运算中将字符串转换为数字

这会起作用

let x = "100";
let y = "10";
let z = x / y;

自己动手试一试 »

这也会起作用

let x = "100";
let y = "10";
let z = x * y;

自己动手试一试 »

这也会起作用

let x = "100";
let y = "10";
let z = x - y;

自己动手试一试 »

但这不起作用

let x = "100";
let y = "10";
let z = x + y;

自己动手试一试 »

在最后一个示例中,JavaScript 使用 + 运算符连接字符串。


NaN - 非数字

NaN 是 JavaScript 保留字,表示一个数字不是合法数字。

尝试对非数字字符串进行算术运算将导致 NaN(非数字)

示例

let x = 100 / "Apple";

自己动手试一试 »

但是,如果字符串是数字,结果将是一个数字

示例

let x = 100 / "10";
自己动手试一试 »

您可以使用全局 JavaScript 函数 isNaN() 来判断一个值是否为非数字

示例

let x = 100 / "Apple";
isNaN(x);
自己动手试一试 »

请注意 NaN。如果您在数学运算中使用 NaN,结果也将是 NaN

示例

let x = NaN;
let y = 5;
let z = x + y;
自己动手试一试 »

或者结果可能是像 NaN5 这样的连接

示例

let x = NaN;
let y = "5";
let z = x + y;
自己动手试一试 »

NaN 是一个数字:typeof NaN 返回 number

示例

typeof NaN;
自己动手试一试 »

Infinity

Infinity(或 -Infinity)是 JavaScript 在您计算超出最大可能数字的数字时将返回的值。

示例

let myNumber = 2;
// 执行直到无穷大
while (myNumber != Infinity) {
  myNumber = myNumber * myNumber;
}
自己动手试一试 »

除以 0(零)也会生成 Infinity

示例

let x =  2 / 0;
let y = -2 / 0;
自己动手试一试 »

Infinity 是一个数字:typeof Infinity 返回 number

示例

typeof Infinity;
自己动手试一试 »

十六进制

如果数字常量前面是 0x,JavaScript 会将其解释为十六进制。

示例

let x = 0xFF;
自己动手试一试 »

切勿以零开头书写数字(例如 07)。
一些 JavaScript 版本会将以零开头的数字解释为八进制。

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

但是您可以使用 toString() 方法输出 基数 2基数 36 的数字。

十六进制是 基数 16。十进制是 基数 10。八进制是 基数 8。二进制是 基数 2

示例

let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
自己动手试一试 »

JavaScript 数字作为对象

通常 JavaScript 数字是字面量创建的原始值

let x = 123;

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

let y = new Number(123);

示例

let x = 123;
let y = new Number(123);
自己动手试一试 »

不要创建 Number 对象。

new 关键词会使代码复杂化并降低执行速度。

Number 对象可能产生意想不到的结果

当使用 == 运算符时,x 和 y 相等

let x = 500;
let y = new Number(500);
自己动手试一试 »

当使用 === 运算符时,x 和 y 不相等

let x = 500;
let y = new Number(500);
自己动手试一试 »

注意 (x==y)(x===y) 之间的区别。

(x == y) 真或假?

let x = new Number(500);
let y = new Number(500);
自己动手试一试 »

(x === y) 真或假?

let x = new Number(500);
let y = new Number(500);
自己动手试一试 »

比较两个 JavaScript 对象总是返回

完整的 JavaScript Number 参考

有关完整的 Number 参考,请访问我们的

完整的 JavaScript Number 参考.

此参考包含所有 Number 属性和方法的描述和示例。

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持