JavaScript数字(Number)个数学(Math)对象

news2025/1/12 23:02:12

目录

前言:

Number(数字)对象

前言:

nfinity(正负无穷大):

NaN(非数字):

Number的属性

Number的方法

构造函数

静态方法

实例方法

Math(数学)对象

常量

函数

代码示例:


前言:

        基本的JavaScript对象存在的意义在于它们为使用者了一套丰富而灵活的工具集,使得使用者能够轻松地处理各种数据类型、执行数学运算、操作文本、处理日期和时间、进行条件判断,以及创建和组织复杂的数据结构等。javascript中的DOM和BOM-CSDN博客 JavaScript简介-CSDN博客

Number(数字)对象

前言:

        在js中我可以使用十进制,十六进制或八进制表示法表示整数或浮点数,但是在js中数字并没有把整数根浮点数区分,统一使用IEEE754标准(二进制浮点数算术标准)的64位浮点格式表示数字,其中可以表示的最大值是:Number.MAX_VALUE,是为\pm 1.7976931348623157e+308 ,其中最小值是:Number.MIN_VALUE是为\pm 5e-324 。

        在JavaScript中,Number 是一个内置对象,用于表示数值。Number 对象提供了很多属性和方法,以进行各种数值操作。

\pm Infinity(正负无穷大):

        在JavaScript中,Infinity 是一个特殊的值,表示正无穷大。相应地,-Infinity 表示负无穷大。这两个值用于表示超出JavaScript能够精确表示的数字范围的数值。

        当你尝试除以零或者执行某些数学运算导致结果超出JavaScript能够表示的最大或最小数值时,就可能会得到 Infinity 或 -Infinity

 Infinity 相关的示例代码:

// 正无穷大的例子  
console.log(1 / 0); // 输出 Infinity  
  
let x = 1e308; // 一个非常大的数  
let y = x * x; // 结果超出了JavaScript能表示的最大数  
console.log(y); // 输出 Infinity  
  

结果如下图所示: 

 

 -Infinity 相关的示例代码:

// 负无穷大的例子  
console.log(-1 / 0); // 输出 -Infinity  
  
let z = -1e308; // 一个非常小的负数  
let w = z * z; // 结果超出了JavaScript能表示的最小数  
console.log(w); // 输出 Infinity(因为负数的平方是正数)  

运行结果如下图: 

 

判断无穷的代码示例: 

// 使用Infinity进行比较  
console.log(Infinity > 1000); // 输出 true  
console.log(Infinity < -1000); // 输出 false  
console.log(Infinity === Infinity); // 输出 true  
  
// 判断一个值是否为无穷大  
console.log(isFinite(1 / 0)); // 输出 false  
console.log(isFinite(-1 / 0)); // 输出 false

结果如下图: 

 

         在JavaScript中,可以使用 isFinite() 函数来检查一个数值是否是有限的,即不是 Infinity 或 -Infinity。同时,也可以使用 Number.POSITIVE_INFINITY 和 Number.NEGATIVE_INFINITY 来获取正无穷大和负无穷大的常量值。

console.log(Number.POSITIVE_INFINITY); // 输出 Infinity  
console.log(Number.NEGATIVE_INFINITY); // 输出 -Infinity

示例如下: 

         Infinity 和 -Infinity 在数学运算中的行为可能与你预期的不同。例如,Infinity 减去 Infinity 的结果是 NaN(非数字),因为这是一个未定义的操作。同样地,Infinity 除以 Infinity 的结果也是 NaN。因此,在使用无穷大值时,需要特别小心。

NaN(非数字):

        在JavaScript中,NaN 是 "Not-a-Number" 的缩写,意为“非数字”。它是一个特殊的值,用于表示某个数学运算的结果不是一个数字或者无法定义。

NaN 有几个特点:

  1. 不等于自身NaN 是唯一一个不等于自身的值。即 NaN === NaN 的结果是 false。要检查一个值是否是 NaN,通常使用 isNaN() 函数或者 Number.isNaN() 函数(推荐后者,因为它不会将非数字值强制转换为数字)。

  2. 数学运算的结果:当某些数学运算无法返回有效的数字结果时,就会返回 NaN。例如,0除以0的结果就是 NaN

  3. 无序性NaN 与任何值(包括它自身)比较都会返回 false,因此它不能被正确地排序。

示例代码如下:

// 产生NaN的一些运算  
console.log(0 / 0); // 输出 NaN  
console.log(Math.sqrt(-1)); // 输出 NaN,因为不能对负数开平方  
console.log("abc" - "def"); // 输出 NaN,因为字符串相减无法产生数字  

结果如下: 

NaN的isNaN函数示例代码:

// 检查NaN  
let result = 0 / 0;  
  
// 不推荐使用isNaN(),因为它会先将参数转换为数字  
console.log(isNaN(result)); // 输出 true  
console.log(isNaN("hello")); // 也会输出 true,因为"hello"在转换为数字时会变成NaN  
  
// 推荐使用Number.isNaN(),它不会进行类型转换  
console.log(Number.isNaN(result)); // 输出 true  
console.log(Number.isNaN("hello")); // 输出 false,"hello"没有被转换为NaN  

结果如下图: 

NaN的判断代码:

// NaN与任何值的比较都会返回false  
console.log(NaN === NaN); // 输出 false  
console.log(NaN === 123); // 输出 false  
  
// 使用Number.isNaN()检查NaN  
console.log(Number.isNaN(NaN)); // 输出 true

结果如下图: 

 

        在处理可能返回 NaN 的数学运算时,应该始终检查结果是否是 NaN,以避免在后续的计算中使用无效的值。使用 Number.isNaN() 是检查 NaN 的推荐方法,因为它在检查前不会尝试将值转换为数字,从而避免了类型转换可能带来的副作用。

Number的属性

  • Number.EPSILON:表示1与大于1的最小浮点数之间的差,用于比较浮点数的精度。
  • Number.MAX_VALUE:可表示的最大正数。
  • Number.MIN_VALUE:大于0的最小正数,即非零的最小正数。
  • Number.NaN:表示非数字(Not-a-Number)。
  • Number.NEGATIVE_INFINITY:负无穷大。
  • Number.POSITIVE_INFINITY:正无穷大。
  • Number.prototype:可以为所有Number对象添加属性或方法。

Number的一些基本属性使用代码如下:

console.log(Number.POSITIVE_INFINITY); // 输出:Infinity  
console.log(Number.NEGATIVE_INFINITY); // 输出:-Infinity  
console.log(Number.NaN); // 输出:NaN  
console.log(Number.MAX_VALUE); // 输出:1.7976931348623157e+308  
console.log(Number.MIN_VALUE); // 输出:5e-324(这个值取决于具体的JavaScript引擎)  
console.log(Number.EPSILON); // 输出:2.220446049250313e-16  
console.log(Number.MIN_SAFE_INTEGER); // 输出:-9007199254740991  
console.log(Number.MAX_SAFE_INTEGER); // 输出:9007199254740991

运行结果如下: 

 

Number的方法

构造函数
  • Number(value):创建一个Number对象,将其初始化为指定的数值或表示数值的字符串。
静态方法
  • Number.parseFloat(string):解析一个字符串参数,并返回一个浮点数。
  • Number.parseInt(string, radix):解析一个字符串参数,并返回一个指定基数的整数(进制)。
  • Number.isFinite(value):检查一个值是否是有限的数字。
  • Number.isInteger(value):检查一个值是否是整数。
  • Number.isNaN(value):检查一个值是否是NaN。
  • Number.isSafeInteger(value):检查一个值是否是一个安全的整数(在 -(2^53 - 1) 和 2^53 - 1 之间)。

Number的一些基本方法如下:

console.log(Number.isFinite(123)); // 输出:true  
console.log(Number.isFinite(Infinity)); // 输出:false  
  
console.log(Number.isInteger(10)); // 输出:true  
console.log(Number.isInteger(10.5)); // 输出:false  
  
console.log(Number.isNaN(Number.NaN)); // 输出:true  
console.log(Number.isNaN('NaN')); // 输出:false,因为'NaN'是字符串,不是NaN数值  
  
console.log(Number.parseFloat('123.45')); // 输出:123.45  
console.log(Number.parseFloat('abc')); // 输出:NaN  
  
console.log(Number.parseInt('123', 10)); // 输出:123  
console.log(Number.parseInt('101010', 2)); // 输出:42(二进制转十进制)

运行结果如下: 

实例方法
  • Number.prototype.toExponential(fractionDigits):将数字转换为指数表示法,并返回字符串。
  • Number.prototype.toFixed(digits):将数字格式化为指定小数位数的字符串。
  • Number.prototype.toPrecision(precision):将数字格式化为指定精度的字符串。
  • Number.prototype.toString(radix):将数字转换为指定基数的字符串。
  • Number.prototype.valueOf():返回原始数值。

Number的一些实例方法示例如下:

let num = 12345.6789;  
  
console.log(num.toString()); // 输出:"12345.6789"  
console.log(num.toFixed(2)); // 输出:"12345.68"  
console.log(num.toExponential(2)); // 输出:"1.23e+4"  
console.log(num.toPrecision(5)); // 输出:"12346"(四舍五入到5位有效数字)  
  
console.log(num.valueOf()); // 输出:12345.6789(返回数值本身)

        请注意,Number原型的方法是通过Number的实例调用的,这意味着你需要先有一个Number类型的值,然后才能调用这些方法。而Number对象的方法则是直接通过Number构造函数调用的,不需要实例。

        另外,要注意的是,尽管可以直接在原始数字类型上调用这些方法(如(123).toString()),但这样做可能会导致代码可读性降低。在大型项目中,为了代码清晰,通常会先将数字赋值给一个变量,然后再调用方法。

Math(数学)对象

        在JavaScript中,Math 是一个内置的全局对象,它提供了多种数学常量和函数。这些函数和常量可以帮助你执行各种数学运算和获取特定的数学值。

以下是一些 Math 对象中的常量和函数的例子:

常量

  • Math.PI: 表示π(圆周率),即圆的周长与其直径之比,约等于3.14159。

函数

  • Math.random(): 返回一个0到1之间的伪随机数(包含0,但不包含1)。
  • Math.floor(x): 返回小于等于一个给定数字的最大整数,即向下取整。
  • Math.ceil(x): 返回大于等于一个给定数字的最小整数,即向上取整。
  • Math.round(x): 返回一个数字四舍五入后的最接近的整数。
  • Math.sqrt(x): 返回一个数字的平方根。
  • Math.pow(x, y): 返回x的y次幂。
  • Math.max(...values): 返回一组数中的最大值。
  • Math.min(...values): 返回一组数中的最小值。
  • Math.abs(x): 返回一个数字的绝对值。

代码示例:

// 使用Math对象的一些示例  
console.log(Math.PI); // 输出圆周率π的值,约为3.14159  
  
console.log(Math.random()); // 输出一个0到1之间的随机数  
  
console.log(Math.floor(3.7)); // 输出3  
console.log(Math.ceil(3.2));  // 输出4  
  
console.log(Math.round(3.49)); // 输出3  
console.log(Math.round(3.5));  // 输出4  
  
console.log(Math.sqrt(9)); // 输出3  
  
console.log(Math.pow(2, 3)); // 输出8  
  
console.log(Math.max(1, 2, 3, 4)); // 输出4  
console.log(Math.min(-1, -2, 0, 1)); // 输出-2  
  
console.log(Math.abs(-5)); // 输出5

结果如下: 

 

         Math 对象提供的方法非常有用,尤其是在进行数学计算、生成随机数、处理几何图形等方面。这些函数不需要任何实例化就可以直接使用,因为 Math 是一个静态对象。

        除了上述列举的函数外,Math 对象还提供了很多其他高级数学函数,如三角函数(Math.sin()Math.cos()Math.tan() 等)、对数函数(Math.log()Math.log10())、以及一些其他特殊函数(如 Math.exp()Math.imul() 等)。这些函数使得在JavaScript中进行复杂的数学运算成为可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1661037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【hackmyvm】 Animetronic靶机

靶机测试 arp-scanporturl枚举exiftool套中套passwordsudo 提权 arp-scan arp-scan 检测局域网中活动的主机 192.168.9.203 靶机IP地址port 通过nmap扫描&#xff0c;获取目标主机的端口信息 ┌──(root㉿kali)-[/usr/share/seclists] └─# nmap -sT -sV -O 192.16…

Java入门基础学习笔记12——变量详解

变量详解&#xff1a; 变量里的数据在计算机中的存储原理。 二进制&#xff1a; 只有0和1&#xff0c; 按照逢2进1的方式表示数据。 十进制转二进制的算法&#xff1a; 除二取余法。 6是110 13是1101 计算机中表示数据的最小单元&#xff1a;一个字节&#xff08;byte&…

今日arXiv最热NLP大模型论文:NAACL24实锤语言学对大模型“负优化”,抽象语义表示+思维链有损表现

大语言模型正以势不可挡的姿态席卷自然语言处理领域。在这个语言模型大显神威的时代&#xff0c;很多任务都转变为了端到端的文本生成任务。那么&#xff0c;在此之前我们苦心孤诣研究了几十年的语义表示&#xff0c;例如 AMR(抽象意义表示)&#xff0c;在这个时代里还能派上用…

docker部署seata与客户端整合seata

微服务和seata的版本关系 1:docker pull seataio/seata-server拉取镜像 [root@WFWCS ~]# docker search seata NAME DESCRIPTION STARS OFFICIAL apache/seata-server Apach…

目前市面上堡垒机厂家有哪些?会帮忙部署吗?

随着大家对于网络安全的重视&#xff0c;越来越多的企业准备采购堡垒机了。不少企业在问&#xff0c;目前市面上堡垒机厂家有哪些&#xff1f;会帮忙部署吗&#xff1f;这里我们小编就来简单为大家回答一下&#xff0c;仅供参考哈&#xff01; 目前市面上堡垒机厂家有哪些&…

【17-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

《十二》Qt各种对话框之FileDialog文件对话框及QMessageBox 消息对话框

QFileDialog 对话框 选择打开一个文件 若要打开一个文件&#xff0c;可调用静态函数 QFileDialog::getOpenFileName()&#xff0c;“打开一个文件”按钮的响应代码如下&#xff1a; void Dialog::on_btnOpen_clicked() { //选择单个文件QString curPathQDir::currentPath()…

安卓通信方式简介

目录 一、Binder二、Socket三、Binder与Socket四、Handler 一、Binder Binder作为Android系统提供的一种IPC机制&#xff0c;无论从系统开发还是应用开发&#xff0c;都是Android系统中最重要的组成。 二、Socket Socket通信方式也是C/S架构&#xff0c;比Binder简单很多。在…

Veeam - 数据保护和管理解决方案_Windows平台部署备份还原VMware手册

Veeam - - 数据保护和管理解决方案 Veeam Backup & Replication Console Veeam Data Platform Veeam Backup & Replication是一款强大的虚拟机备份、恢复和复制解决方案 安全备份、干净恢复和数据弹性 — 即时交付 在混合云中随时随地管理、控制、备份和恢复您的所有数…

debian testing (预计13版本)wps字体无法正常显示

背 景 本人使用debian办公&#xff0c;原来使用的是debian 12,由于“生命不息&#xff0c;折腾不止“&#xff0c;终于将稳定版的debian 12升级为testing. 结果发现&#xff0c;debian 12能够正常使用的wps存在部分字体无法正常显示&#xff0c;经研究发现&#xff0c;原来是w…

论文《Deep graph tensor learning for temporal link prediction》阅读

论文《Deep graph tensor learning for temporal link prediction》阅读 论文概况IntroductionRelated work动态图表示学习图张量表示 Preliminary张量生成建模 深度图张量学习模型A.基于图紧凑的空间表示B.时间模式表示C.时空特征聚合D.损失函数 实验消融实验 总结 论文概况 …

【C++】学习笔记——string_5

文章目录 六、string类7. string类的模拟实现8. string类的模拟实现的完整代码string.h头文件test.c源文件 9. string收尾写时拷贝 未完待续 六、string类 7. string类的模拟实现 我们之前讲了实现 insert &#xff0c;但是那个插入函数仅仅是在 pos 位置插入一个字符而且&am…

提取网页元数据的Python库之lassie使用详解

概要 Lassie是一个用于提取网页元数据的Python库,它能够智能地抓取网页的标题、描述、关键图像等内容。Lassie的设计目的是为了简化从各种类型的网页中提取关键信息的过程,适用于需要预览链接内容的应用场景。 安装 安装Lassie非常简单,可以通过Python的包管理器pip进行安…

多目标跟踪入门介绍

多目标跟踪算法 我们也可以称之为 Multi-Target-Tracking &#xff08;MTT&#xff09;。 那么多目标跟踪是什么&#xff1f; 不难看出&#xff0c;跟踪算法同时会为每个目标分配一个特定的 id 。 由此得出了目标跟踪与目标检测的区别&#xff08;似乎都是用方框来框出目标捏…

PLC设备通过智能网关采用HTTP协议JSON文件对接MES等系统平台

智能网关IGT-DSER集成了多种PLC的原厂协议&#xff0c;方便实现各种PLC、智能仪表通过HTTP协议与MES等各种系统平台通讯对接。PLC内不用编写程序&#xff0c;设备不用停机&#xff0c;通过网关的参数配置软件(下载地址)配置JSON文件的字段与PLC寄存器地址等参数即可。 智能网关…

小程序如何确定会员身份并批量设置会员积分或余额

因为一些原因&#xff0c;商家需要从其它系统里面批量导入会员&#xff0c;确定会员身份&#xff0c;然后给他们设置对应的账户余额。下面&#xff0c;就具体介绍如何进行这种操作。 一、客户进入小程序并绑定手机号 进入小程序&#xff1a;客户打开小程序&#xff0c;系统会自…

利用AI提高内容生产效率的五个方案

目录 如何利用AI提高内容生产效率? ​编辑方向一&#xff1a;自动化内容生成 方向二&#xff1a;内容分发与推广 方向三&#xff1a;内容分析与优化 方向四&#xff1a;图像和音频处理 方向五&#xff1a;自动编辑和校对 如何利用AI提高内容生产效率? 简介&#xff1a…

system函数和popen函数

system函数 #include <stdlib.h> *int system(const char command); system函数在linux中的源代码&#xff1a; int system(const char * cmdstring) {pid_t pid;int status;if(cmdstring NULL){return (1);}if((pid fork())<0){status -1;}else if(pid 0){ //子…

【YashanDB知识库】ycm托管数据库时报错OM host ip:127.0.0.1 is not support join to YCM

问题现象 问题的风险及影响 导致数据库无法托管监控 问题影响的版本 问题发生原因 安装数据库时修改了OM的监听ip为127.0.0.1 解决方法及规避方式 后台修改OM的ip为本机的ip或者0.0.0.0 问题分析和处理过程 1、修改env文件中的om IP地址&#xff0c;修改为0.0.0.0或本机…

G2 - 人脸图像生成(DCGAN)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 理论知识DCGAN原理 模型结构逻辑结构物理结构 模型实现前期准备1. 导入第三方库2. 修改随机种子(相同的随机种子&#xff0c;第i次随机的结果是固定的)3.…