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

目录

前言:

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中进行复杂的数学运算成为可能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里天池基于LLM智能问答系统学习赛排到第一名了

阿里天池基于LLM智能问答系统学习赛排到第一名了 0. 引言1. 05-09分数排到第一名了 0. 引言 5.1 假期期间发现阿里天池基于LLM智能问答系统学习赛正好是我工作上用到的技术&#xff0c;就抱着玩一玩的心里挑战了一下。 这个比赛包含了text_comprehension&#xff08;RAG&…

【Linux】Linux安装JDK

一、卸载Linux自带的JDK #查询已有的JDK rpm -qa | grep jdk ①将查询到的JDK全部卸载掉 #直接复制一整行的JDK名称 yum -y remove java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64 ②卸载完第一个后再次查询 ③继续卸载&#xff0c;卸载完成后再次查询 ④查询…

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届CCPC河南省大学生程序 设计竞赛Problem L. Toxel 与 PCPC II

//sort bug下标 遍历dp. //没修负的bug肯定连续 #include<bits/stdc.h> using namespace std; #define int long long const int n1e611; int a,b,c[n],dp[n]; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a>>b;for(int i1;…

高铁列车班组信息宣传投稿我喜欢上了这个好方法

作为高铁列车班组的一名工作人员,我肩负着对外信息宣传的重任。随着高铁列车的快速发展,我们班组不仅需要提供优质的服务,还需要通过媒体向外界传递我们的声音,展示我们的风采。然而,在投稿的过程中,我经历了一段充满挑战和困惑的时光。 起初,我采用传统的邮箱投稿方式,将精心撰…

基于Java的qq截图工具参考论文(论文 + 源码)

【免费】基于Java的qq截图工具.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89304179 基于Java的qq截图工具 摘要 当今时代是飞速发展的信息时代&#xff0c;人们在对信息的处理中对图像的处理量与日俱增&#xff0c;这一点在文档人员上显得非常突出。 本软…

Hbase基础操作Demo(Java版)

一、前置条件 HBase服务&#xff1a;【快捷部署】023_HBase&#xff08;2.3.6&#xff09;开发环境&#xff1a;Java&#xff08;1.8&#xff09;、Maven&#xff08;3&#xff09;、IDE&#xff08;Idea 或 Eclipse&#xff09; 二、相关代码 代码结构如上图中①和② pom.x…

新消息:2024中国(厦门)国际义齿加工产品展览会

DPE2024中国&#xff08;厦门&#xff09;国际义齿加工产品展览会暨学术研讨会 2024 China (Xiamen) International Denture Processing Products Exhibition 时 间&#xff1a;2024年11月1-3日 November 1-3, 2024 地 点&#xff1a;厦门国际会展中心 Xiamen Int…

Llama3中文聊天项目全能资源库

Llama3 中文聊天项目综合资源库&#xff0c;集合了与Lama3 模型相关的各种中文资料&#xff0c;包括微调版本、有趣的权重、训练、推理、评测和部署的教程视频与文档。1. 多版本支持与创新&#xff1a;该仓库提供了多个版本的Lama3 模型&#xff0c;包括基于不同技术和偏好的微…

基于SpringBoot + Vue的扶贫助农管理系统设计与实现+毕业论文

系统介绍 系统分为用户和管理员两个角色 用户&#xff1a;登录、注册、论坛信息、查看扶贫公告信息、查看扶贫任务信息、报名任务、查看新闻信息&#xff08;新闻收藏、新闻留言&#xff09;、个人中心、在线客服等功能 管理员&#xff1a;登录、管理员管理、基础信息管理、客…

高考志愿系统-信息管理模块:院校信息分析

信息模块包括三个信息实体&#xff1a;招生学校&#xff0c;专业&#xff0c;分数线。 学校实体中有一个叫院校代码的属性&#xff0c;专业实体中含有院校代码这个属性&#xff0c;属于外键&#xff0c;一个学校有多个专业&#xff0c;所以学校和专业属于一对多关系。 专业实…

学习Uni-app开发小程序Day10

前面学习了局部组件的创建和简单使用&#xff0c;今天学习了slot&#xff08;插槽&#xff09;和组件之间的传值1. 插槽的使用 在components中&#xff0c;创建一个组件&#xff0c;给组件设置头部布局、内容布局、底部布局&#xff0c;例如&#xff1a; <template><…

数据科学:使用Optuna进行特征选择

大家好&#xff0c;特征选择是机器学习流程中的关键步骤&#xff0c;在实践中通常有大量的变量可用作模型的预测变量&#xff0c;但其中只有少数与目标相关。特征选择包括找到这些特征的子集&#xff0c;主要用于改善泛化能力、助力推断预测、提高训练效率。有许多技术可用于执…

Springboot整合 Spring Cloud Gateway

1.Gateway介绍 1.是spring cloud官方推出的响应式的API网关框架&#xff0c;旨在为微服务架构提供一种简单有效的API路由的管理方式&#xff0c;并基于Filter的方式提供网关的基本功能&#xff0c;例如&#xff1a;安全认证&#xff0c;监控&#xff0c;限流等等。 2.功能特征…

计算机网络学习记录 网络的大概认识 Day1

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github gitee 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会尽力带来有趣的内容 计算机网络学习记录Day1 本文基于1.1 计算机网络在信息…

利用香港多IP服务器进行大数据分析的潜在优势?

利用香港多IP服务器进行大数据分析的潜在优势? 在当今数据驱动的时代&#xff0c;大数据分析已经成为企业获取竞争优势的不二选择。而香港作为一个拥有世界级通信基础设施的城市&#xff0c;提供了理想的环境来部署多IP服务器&#xff0c;从而为大数据分析提供了独特的优势。…

链动2+1结合消费增值:破解用户留存与复购的密码

大家好&#xff0c;我是吴军&#xff0c;来自一家领先的软件开发公司&#xff0c;担任产品经理的职务。今天&#xff0c;我希望能与大家深入交流链动21模式&#xff0c;特别是它在提升用户留存和复购率方面的独特价值。 虽然链动模式在某些人眼中可能被视为传统或已被超越&…

升级! 测试萌新Python学习之连通数据库Pymsql增删改及封装(四)

pymysql 数据库概述python对数据库的增删改查pymysql核心操作事务事务操作pymysql工具类封装每日复习ChatGPT的回答 数据库概述 分类 关系型数据库: 安全 如, mysql oracle SQLite…database tables 行列 非关系型数据库: 高效 如, redis mongoDB…数据存储结构多样 键值对…

半个小时搞懂STM32面经知识——DMA

1.DMA 1.1 什么是DMA&#xff1f; DMA传输将数据从一个地址空间复制到另一个地址空间&#xff0c;提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。 CPU无时不刻的在处理着大量的事务&#xff0c;但有些事情却没有那么重要&#xff0c;比方说数据的复制和存储数…

Vue2---router(配置路径、路由跳转、相关API、多级路由、路由守卫,两种工作模式)

Vue2—router(配置路径、路由跳转、相关API、多级路由、路由守卫&#xff0c;两种工作模式) 目录 Vue2---router(配置路径、路由跳转、相关API、多级路由、路由守卫&#xff0c;两种工作模式)安装配置路径路由跳转不携带参数跳转携带参数跳转?形式携带参数地址中直接携带参数 …

存内计算加速大模型——REM-CiM的RGB-事件融合多模态类比计算内存(CiM)技术

本文为大模型&存内计算融合专题的首篇文章&#xff0c;我们将以这篇名为《REM-CiM: Attentional RGB-Event Fusion Multi-modal Analog CiM for Area/Energy-efficient Edge Object Detection during both Day and Night》为例[1]&#xff0c;探讨其在文中提到的多模态大模…