JavaScript 中的无穷数(Infinity)详解

来源:脚本之家  责任编辑:小易  

有以下几个问题:1、x和y要转换成数字,可用parseFloat或parseInt,否则会当成字

为了保证的可读性,本文采用意译而非直译。

0不可以做除数。NaN值是JS在执行数字运算或者数字类型转换时失败的结果值,还是属于数字类型。

Infinity(无穷大)在 JS 中是一个特殊的数字,它的特性是:它比任何有限的数字都大,如果不知道 Infinity, 我们在一些运算操作遇到时,就会觉得很有意思。

首先,怎么会有除数除以被除数这种情况?应该是除数除被除数或者被除数除以除数;既然已经有了被除数这

现在我们来看看 JS 中的Infinity 属性,了解用例并解决一些常见的陷阱。

JS是解释执行的,所以合理的猜测,js的解释器(一般就是浏览器),判断到除数为0,是无穷大这个没问题

1.Infinity(无穷)的定义

<html><head><meta http-equiv=&q

无穷可以分为两种,正无穷和负无穷,JS 中对应的表示方式为:+Infinity(或者Infinity) 和 -Infinity。

遗民泪已尽,遥望徽州是何年!  这片土地以前叫徽州,安徽省的“徽”指的就是这里,古代的“江南”也包括这里。徽商、徽菜、徽墨、徽派建筑、徽雕、徽剧、徽州朴学、版画、篆刻、刻书、新安画派、理学、医学、文房四宝(徽墨、歙砚、澄心堂纸、汪伯立笔)、徽派盆景、徽州民俗、徽州方言、徽州漆器、徽州竹编等……,这些都是徽州文化的重要内容,无一不在讲述着徽州的辉煌。  徽州文化简称徽文化,中国三大地域文化之一。徽文化不同于现在大家现在所知的安徽文化,徽州文化的地域只包括现在的黄山市和现在宣城的绩溪,江西的婺源等地。  一提到徽州,大家能想起太多东西了,能给人无尽的想象,当然了,那里还有一座名山,黄山!徽州不仅是

这意味着Infinity和-Infinity(小于任何有限数的数字)都是number类型的特殊值:

目前,3C产品的全金属外壳基本都是由数控机床(Computernumericalcontrolmachinetools,CNC)加工的。CNC因其效率高、精度高、加工质量稳定的优点成为手机外壳厂商的必备设备。CNC加工前序工作:建模与编程CNC加工开始前,首先需要建模与编程。3D建模的难度由产品结构决定,结构复杂的产品建模较难,需要编程的工序也更多、更复杂。编程囊括了加工的工序设定、刀具选择,转速设定,刀具每次进给的距离等等。此外,不同产品的装夹方式不同,在加工前要设计好夹具,部分结构复杂产品需要做专门的夹具。同时要评估好胚料的大小,以及CNC的次数,前期评估的好坏直接影响到后面的加工时间和加

typeof Infinity; // => 'number' typeof -Infinity; // => 'number'

在经典的“86版”《西游记》里,唐僧曾有过三位不同的扮演者——汪粤、徐少华和迟重瑞。三人是当年标准的美男子,不知迷倒了多少姑娘。汪粤代表剧集—《三打白骨精》汪粤是第一个进入剧组的唐僧。当年他还是电影学院的学生,被前来选角儿的杨洁导演看中。杨洁对他的评价是:很俊气,不女气。但是,学电影出身的汪粤执著于电影,于是在几集之后又匆匆离开剧组。因为梦想成为电影明星,而放弃电视剧《西游记》唐僧的拍摄,而拍摄的电影至今也未曾上映。对此,汪粤表示,遗憾和后悔都没有用,毕竟年轻的时候想多干一些事情。徐少华代表剧集—《女儿国》徐少华原本是山东话剧院的演员,现在依然在此工作。汪粤走后,徐少华接替他演了8集的唐僧,而

Infinity 是全局对象的属性:

魅族前段时间有款蓝牙音箱不错,是蓝牙音箱还不错,不比品牌。独树一帜的设计作为一款主打日常使用的产品,魅族蓝牙小音箱有其独特之处。相比之前魅族发布的LifemeBTS30蓝牙音箱,魅族蓝牙小音箱首先在外观设计上就有加分的地方,不同于前者的正正方方,与柱体一般,魅族蓝牙小音箱整体采用半球形的设计方案,让人有一种想轻轻抚摸的冲动。其他品牌的蓝牙音箱不同,魅族蓝牙小音箱在采用全新外观的同时,还加入了纳米技术的喷涂,让整个音箱的握持感和手感都保持着一流的水准。为了提高音箱的耐磨性,整个箱体采用了高强度的PC+ABS工程塑胶材料,让小音箱的使用寿命得以延长。此外,魅族蓝牙小音箱还加入了拉丝工艺铝合金的边框

window.Infinity; // => Infinity

另外,Number函数也有两个属性来表示正负无穷大:

Number.POSITIVE_INFINITY; // => Infinity

Number.NEGATIVE_INFINITY; // => -Infinity

2. Infinity 的特性

Infinity比任何有限数都大。

举几个例子 Look Look:

Infinity > 100;                     // => true

Infinity > Number.MAX_SAFE_INTEGER; // => true

Infinity > Number.MAX_VALUE;        // => true

Infinity 在加法、乘法和除法等算术运算中用作操作数时会产生有趣的效果:

Infinity + 1;        // => Infinity

Infinity + Infinity; // => Infinity

Infinity * 2;        // => Infinity

Infinity * Infinity; // => Infinity

Infinity / 2;        // => Infinity

一些Infinity 的运算得到有限的数:

10 / Infinity; // => 0

一个有限的数除以0得到 Infinity 结果:

2 / 0; // => Infinity

对无穷数进行概念上不正确的运算会得到NaN。 例如,不能除以无限数,也无法确定无限数是奇数还是偶数:

Infinity / Infinity; // => NaN

Infinity % 2;        // => NaN

2.1 负无穷

负无穷小于任何有限数。

将-Infinity 与一些有限数字进行比较:

-Infinity < 100;                      // => true

-Infinity < -Number.MAX_SAFE_INTEGER; // => true

-Infinity < -Number.MAX_VALUE;        // => true

同时,负无穷小于正无穷:

-Infinity < Infinity; // => true

当使用不同操作符操作数时,也可能会得到负无穷:

Infinity * -1; // => -Infinity

Infinity / -2; // => -Infinity

-2 / 0;        // => -Infinity

3.判断无穷

幸运的是,Infinity等于相同符号的Infinity:

Infinity === Infinity; // => true

-Infinity === -Infinity; // => true

但前面的符号不一样就不相等,就也很好理解:

Infinity === -Infinity; // => false

JSt有一个特殊的函数Number.isFinite(value),用于检查提供的值是否有限数:

Number.isFinite(Infinity);  // => false

Number.isFinite(-Infinity); // => false

Number.isFinite(999);       // => true

4. 无穷的的使用情况

当我们需要初始化涉及数字比较的计算时,无穷值就非常方便。例如,在数组中搜索最小值时:

function findMin(array) {

  let min = Infinity;

  for (const item of array) {

    min = Math.min(min, item);

  }

  return min;

}

findMin([5, 2, 1, 4]); // => 1

min变量使用Infinity初始化。 在第一次for()迭代中,最小值成为第一项。

5. Infinity 的的一些坑

我们很可能不会经常使用Infinity值。 但是,值得知道何时会出现Infinity值。

5.1. 解析数据

假设 JS 使用一个输入(POST请求、输入字段的值等)来解析一个数字。在简单的情况下,它会工作得很好:

parseFloat('10.5'); // => 10.5

parseFloat('ZZZ'); // => NaN

这里需要小心的,parseFloat()将'Infinity'字符串解析为实际的Infinity数:

parseFloat('Infinity'); // => Infinity

另一个是使用parseInt()来解析整数,它无法将'Infinity'识别为整数:

parseInt('10', 10); // => 10

parseInt('Infinity', 10); // => NaN

5.2 JSON 序列化

JSON.stringify()将Infinity数字序列化为null。

const worker = {

 salary: Infinity

};

JSON.stringify(worker); // => '{ "salary": null }'

salary 属性值为Infinity但是当字符串化为JSON时,"salary"值将变为null。

5.3 最大数溢出

Number.MAX_VALUE是 JS 中最大的浮点数。

为了使用甚至大于Number.MAX_VALUE的数字,JS 将该数字转换为Infinity:

2 * Number.MAX_VALUE; // => Infinity

Math.pow(10, 1000);   // => Infinity

5.4 Math 函数

JS 中Math命名空间的某些函数可以返回Infinity:

const numbers = [1, 2]; const empty = []; Math.max(...numbers); // => 2 Math.max(...empty); // => -Infinity Math.min(...numbers); // => 1 Math.min(...empty); // => Infinity

在不带参数的情况下调用Math.max()时,返回-Infinity,而Math.min()则相应地返回Infinity。 如果尝试确定一个空数组的最大值或最小值,那结果后面人感到意外。

总结

JS中的Infinity表示无穷数的概念。 任何有限数均小于Infinity,而任何有限数均大于-Infinity。

比较 JS 中的无穷值很容易:Infinity === Infinity 为 true。特殊的函数Number.isFinite()确定提供的参数是否是一个有限的数字。

在涉及数字比较的算法时,可以使用Infinite初始化变量,用例是寻找数组的最小值。

解析来自输入的数字时,必须小心Infinity:Number('Infinity'),parseFloat('Infinity')返回实际的Infinity。 当使用JSON.stringify()序列化时,Infinity变为null。

原文:https://dmitripavlutin.com/infinity-in-javascript/

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

在Javascript中,为什么2/0的结果是Infinity

JS是解释执行的,所以合理的猜测,js的解释器(一般就是浏览器),判断到除数为0,是无穷大这个没问题吧?数学上的概念。如果编译型的代码在运行器件除0cpu就处理不了,一般就抛出运行时异常。

用JavaScript打印:在网页中查看alert(10/0)的结果。(数据类型infinity)

不知道你问的是什么,那我就随便乱说吧, 任何正数除0结果是正无穷(infinity),任何负数除以0结果是负无穷(-infinity),0除以0结果为NaN(不是number类型)

js 怎么判断infinity

var num = 1/0,

    finite = isFinite(num);

console.log(num); // Infinity

console.log(finite); // false

finite = isFinite(0);

console.log(finite); // true;本回答被提问者和网友采纳

在javascript中,为什么Infinity与0相乘得到NaN,0与0相除得到NaN而任何数值与0相除得到Infinity ?

对于这种事先规定的规矩别钻牛角尖,只有基本的规定才能解释一些事,就好像规定长乘以宽等于面积,那为什么长乘以宽等于面积呢?因为这是规定,只有先定义面积才能计算体积,从而才能计算一些其他复杂的东西;任何能自圆其说的一门体系就是科学,中医有中医的理论,西医有西医的一套理论,就是这个道理本回答被网友采纳

关于Javascript中NaN的问题

按照这样子的一个思路来理解:

-Infinity 加 Infinity 无解,无法判断谁更大一些

-Infinity 加 -Infinity 更趋向于负无穷

Infinity 加 Infinity 更趋向于正无穷

Infinity 加 -Infinity 无解

var y=-3.1415926666E3088;

y=y-1e292;

alert(y); // -Infinity

var y=-3.1415926666E3088;

y=y-1e292;

alert(3E30000); // Infinity

alert(y-3E30000); // -Infinity 减 Infinity 为 -Infinity

var y=-3.1415926666E3088;

y=y-1e292;

alert(y+3E30000); // -Infinity 加 Infinity 为 NaN

  • 本文相关:
  • 简介javascript中positive_infinity值的使用
  • javascript中number.negative_infinity值的使用详解
  • javascript nan和infinity特殊值 [译]
  • 网页中cdata标记的说明
  • javascript中tostring()方法的使用详解
  • nodejs的url截取模块url-extract的使用实例
  • 从数据结构分析看:用for each...in 比 for...in 要快些
  • javascript的this详解
  • js数组常用最重要的方法
  • 浅析四种常见的javascript声明循环变量的书写方式
  • 脚本中出现 window.open() access is denied - 拒绝访问 情况一则
  • 详解javascript中date.utc()方法的使用
  • 深入解析contentwindow, contentdocument
  • 在Javascript中,为什么2/0的结果是Infinity
  • 用JavaScript打印:在网页中查看alert(10/0)的结果。(数据类型infinity)
  • js 怎么判断infinity
  • 在javascript中,为什么Infinity与0相乘得到NaN,0与0相除得到NaN而任何数值与...
  • 关于Javascript中NaN的问题
  • 这是个javascript计算器 但是为什么输出永远是infinity啊????!!!!
  • JS中10%0为什么是NaN,NaN跟正负infinity为什么又都是Number类型的
  • js 判断除数除以被除数,被除数是0 ,然后怎样得到被除数返回的还是0,而不是Infinity
  • 在Javascript中,为什么2/0的结果是Infinity
  • 我的javascript计算器 为什么输出永远是infinity啊???!!!
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved