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

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

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

相关文章

【数据结构】详解队列

现在我们来掌握一下队列&#xff01;如果有对往期知识有不足地方&#xff0c;可翻阅之前文章哦&#xff01; 个人主页&#xff1a;小八哥向前冲~-CSDN博客 所属专栏&#xff1a;数据结构【c语言版】_小八哥向前冲~的博客-CSDN博客 栈和队列的实现其实都是对你顺序表和链表的检验…

Dev-C++的下载和安装教程(超详细图文,小白入门)

Dev-C&#xff08;或者叫做Dev-Cpp&#xff09;是Windows环境下的一个轻量级C/C集成开发环境&#xff08;IDE&#xff09;。它是一款自由软件&#xff0c;遵守GPL许可协议分发源代码。 Dev-C集合了功能强大的源码编辑器、MingW64/TDM-GCC编译器、GDB调试器和AStyle格式整理器等…

4.uniapp+vue3项目使用vuex

文章目录 1. uniappvue3项目使用vuex1.1. main.js引入store1.2. 创建store/index.js1.3. 项目中引用1.4. 开始解决实际问题1.5. vuex和storage的区别 1. uniappvue3项目使用vuex 这篇文章&#xff0c;既是使用的教程&#xff0c;也是用来解决一个实际问题&#xff1a;uView自定…

GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、sync.WaitGroup和sync.Once 1. sync.WaitGroup 比通道更加适合实现一对多的 goroutine 协作流程。 2. WaitGroup类型有三个指针方法&#xff1a;Wait、Add和Done&#xff0c;以及内部有一个计数器。 (1) Wa…

代码随想录训练营Day 27|理论基础、力扣 77. 组合

1.理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 来自代码随想录的网站&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (…

基于springboot+vue+Mysql的音乐翻唱与分享平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

☀☀☀☀☀☀☀有关栈和队列应用的oj题讲解☼☼☼☼☼☼☼

准备好了么 目录&#xff1a; 一用两个队列实现栈&#xff1a; 1思路&#xff1a; 2画图理解&#xff1a; 3代码解答&#xff1a; 二用两个栈实现队列&#xff1a; 1思路&#xff1a; 2画图理解&#xff1a; 3代码解答&#xff1a; 三设计循环队列&#xff1a; 1思路…

synchronized 使用及实现原理

synchronized 关键字 如何使用 synchronized 关键字的使用方式主要有下面 3 种&#xff1a; 修饰实例方法 修饰静态方法 修饰代码块 1、修饰实例方法 &#xff08;锁当前对象实例&#xff09; 给当前对象实例加锁&#xff0c;进入同步代码前要获得 当前对象实例的锁 。 …

Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER

目录 1. 简介 2. 示例 2.1 示例功能介绍 2.2 示例代码 2.3 顶层函数解释 2.4 综合报告&#xff08;HW Interfaces&#xff09; 2.5 关于TKEEP和TSTRB 2.6 综合报告&#xff08;SW I/O Information&#xff09; 3. 总结 1. 简介 本文通过“<Examples>/Interface…

pytest(二)

1.pytest-html⽣成报告 Pytest-HTML 是⼀个插件&#xff0c;它可以⽣成漂亮且易于阅读的 HTML 测试报告。下⾯是使⽤ pytest-html ⽣成报告的步骤&#xff1a; 1. 安装 pytest-html 插件&#xff1a; pip install pytest-html 2. 运⾏测试并⽣成报告 pytest --htmlr…

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式&#xff1a; 当键盘按ctrlc的时候&#xff0c;切换消息读取方式&#xff0c;一般情况为读取指定编号的消息&#xff0c;按ctrlc之后&#xff0c;指定的编号不读取&#xff0c;读取其他所有编号的消息…

CCF-Csp算法能力认证,202209-1如此编码(C++)含解析

前言 推荐书目&#xff0c;在这里推荐那一本《算法笔记》&#xff08;胡明&#xff09;&#xff0c;需要PDF的话&#xff0c;链接如下 「链接&#xff1a;https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd6vdq# 提取码&#xff1a;6vdq”复制这段内容后打开手机迅雷…

python内置函数exec()和eval()区别

在Python中&#xff0c;eval() 和 exec() 都是内置函数&#xff0c;用于执行存储在字符串或对象中的Python代码&#xff0c;但它们之间也有一些区别。 eval() 语法&#xff1a;eval(expression, globalsNone, localsNone) expression&#xff1a;需要求值的字符串表达式。可…

到底考不考CISP?纠结的看过来

专业认证如CISP&#xff08;注册信息安全专业人员&#xff09;成为了衡量专业水平的重要标准。 CISP的含金量懂的都懂&#xff0c;然而&#xff0c;是否要投入时间、精力和金钱去追求这样一个认证&#xff0c;对于许多人来说&#xff0c;依然是一个值得深思的问题。 那么到底…

第十一届蓝桥杯大赛软件类决赛 Java C 组

文章目录 发现宝藏【考生须知】试题 A: 美丽的 2试题 B: 合数个数试题 C: 扩散试题 D: 阶乘约数试题 E: 本质上升序列试题 F 天干地支试题 G 皮亚诺曲线距离试题 H 蓝肽子序列试题 I: 画廊试题 J 答疑 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&a…

Linux 操作系统多路IO复用

1.多路IO复用 多路I/O复用是通过一种机制&#xff0c;可以监视多个描述符&#xff0c;一旦某个描述符就绪&#xff08;一般是读就绪或者写就绪&#xff09;&#xff0c;能够通知程序进行相应的读写操作。 这个机制能够通过select/poll/eroll等来使用。这些函数都可以同时监视多…

文件流-二进制文件(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 建立两个二进制磁盘文件f1.dat,f2.dat&#xff0c;编程实现以下工作&#xff1a; &#xff08;1&#xff09;将20个整数&#xff08;可在程序中初始化&#xff09;&#xff0c;分别存放到两个磁盘文件中&#xff0c;前10个放到f1.dat中&…

Linux下网络命令

目录 需求1-查看本机是否存在22端口解法1解法2解法3 需求2-查看其他主机是否存在22端口解法1解法2解法3 需求3-查看TCP连接解法1/2 需求4-统计80端口tcp连接次数解法 需求5-查看总体网络速度解法 需求6-查看进程流量解法 需求7-dns解法 需求8-traceroute到baidu解法 需求9-查看…

任务通知理论和使用

文章目录 一、任务通知是什么&#xff1f;1.1任务通知的优势1.2任务通知的限制1.3通知状态和通知值 二、任务通知的使用2.1任务通知使用_轻量级信号量2.2任务通知使用_轻量级队列2.3任务通知使用_轻量级事件组 一、任务通知是什么&#xff1f; 我们使用队列、信号量、事件组等…

浅析视频汇聚EasyCVR视频融合云平台在机场安防智能检测建设中的应用

一、背景 机场作为国家交通枢纽和对外开放的窗口&#xff0c;其安全运行直接关系到乘客的生命安全、国家形象以及社会经济稳定。随着全球航空业的快速发展和人们出行需求的持续增长&#xff0c;机场作为重要的交通枢纽&#xff0c;其客流量和货运量均呈现出快速增长的态势。然而…