广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript数据结构Number
  • 941
分享到

JavaScript数据结构Number

2024-04-02 19:04:59 941人浏览 安东尼
摘要

目录前言:一、NaN和Infinity二、常用方法1.安全数字2.整数判断3.数字格式判断4.四舍五入5.生成随机数三、总结前言: Number 是javascript的基本数据结构

前言:

Numberjavascript的基本数据结构,是对应数值的应用类型。要创建一个 Number 对象,就使用 Number 构造函数并传入一个数值。在 JavaScript 中没有其他语言这么多的数字类型。根据 ECMAScript 标准,数字只有一种类型,它是“双精度 64 位二进制格式 IEEE 754 值”。这种类型用于存储整数和分数,相当于 Java 和 C 中的 double 数据类型。这个独特性也就导致了 0.1+0.2 为什么不等于 0.3。本文介绍JavaScript使用 Number 的常见问题。

先来看下下面的代码:

console.log(0.1 + 0.2); // 0.30000000000000004

从上面运行结果可以看出 0.1+0.2 不等于 0.3。只有分母为 2 的幂的分数才能有限地表示为二进制形式. 由于 0.1 (1 / 10) 和 0.2 (1 / 5) 的分母不是 2 的幂,因此这些数字不能以二进制格式有限地表示。为了将它们存储为 IEEE-754 浮点数,它们必须四舍五入到尾数的可用位数——半精度为 10 位,单精度为 23 位,双精度为 52 位。根据可用的精度位数,0.1 和 0.2 的浮点近似值可能比相应的十进制表示略小或略大,但永远不会相等。因为这个事实,永远不会有 0.1+0.2 == 0.3。

一、NaN和Infinity

NaN 代表Not a Number 并且它不同于 Infinity,尽管两者通常在实数的浮点表示以及浮点运算中都作为特殊情况处理。NaN 是一个特殊的值,它是唯一一个不等于自身的值,来看看下面的代码理解一个这个值:

const num = 9 + NaN;
console.log(num); // NaN
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
console.log(Object.is(NaN, NaN)); // true
console.log(isNaN(NaN)); // true
console.log(isNaN("devpoint")); // true
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("devpoint")); // false
console.log(Number.isNaN(+"devpoint")); // true

Infinity 是 JavaScript 中的一个特殊值,表示数学无穷大和溢出值,数字太大以至于“溢出”缓冲区并导致 Infinity。它是计算创建超出 JavaScript 中特殊最大值的数字的结果,该值约为1.79e+308 或 2¹⁰²⁴,即 JavaScript 中可以存储为数字原始类型的最大值。

注意 :Infinity,-Infinity 和 NaN 是 JavaScript 中唯一的“无限”(非有限)数字。

二、常用方法

在程序中处理数字是一个常见的需求,例如序号、费用、温度等等。下面通过代码展示一些常用的与 Number 有关的方法。

1.安全数字

安全数字是一个数字,其值保证可以正常显示。例如,如果有一个变量值为 900719925474099194 ,那么它是否安全?

下面来看 JavaScript 中安全数字的范围是多少?如何验证?

  • Number.MIN_SAFE_INTEGER:-9007199254740991
  • Number.MAX_SAFE_INTEGER:9007199254740991
  • Number.MAX_VALUE:1.7976931348623157e+308
  • Number.MIN_VALUE:`5e-324
const test = 900719925474099194;
console.log(Number.isSafeInteger(test)); // false
console.log(Number.isSafeInteger(9007199254740991)); // true

2.整数判断

JavaScript 中对于数字不区分整数、小数等类型,统称为 Number 类型。从下面的代码结果可以想到判断整数的方法:

console.log(Number.isInteger(9)); // true
console.log(Number.isInteger(9 / 2)); // false
console.log(Number.isInteger(9.6)); // false
console.log(9 % 1 === 0); // true
console.log(9.1 % 1 === 0); // false
const checkInteger = (num) => (num | 0) === num;
console.log(checkInteger(9)); // true
console.log(checkInteger(9.1)); // false
console.log(checkInteger("9.0")); // false
console.log(checkInteger("")); // false

3.数字格式判断

下面的代码片段将展示如何检查一个值或变量是否包含一个数字(整数、浮点数等)。

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
console.log(isNumber(100)); // true
console.log(isNumber(3.14)); // true
console.log(isNumber("3.14")); // true
console.log(isNumber("a3.14")); // false
console.log(isNumber("JavaScript")); // false

4.四舍五入

JavaScript 中,对数值进行四舍五入操作有很多的方式,下面来一一总结一下。

向上取整:

向上取整使用 Math.ceil(),返回大于或等于 x ,并且与之最接近的整数。

console.log(Math.ceil(9.005)); // 10
console.log(Math.ceil(9.999)); // 10

四舍五入:

Math.round() 是对一个浮点数进行四舍五入,并保留整数位。语法如下:

Math.round(x)

x :需要处理的数值

返回值,返回给定数字的四舍五入后的值。

console.log(Math.round(9.005)); // 9
console.log(Math.round(9.51)); // 10
console.log(Math.round(9.49)); // 9
console.log(Math.round(9.999)); // 10

固定精度:

.toFixed()Number 原型上实现的一个方法,其作用是对一个浮点数进行四舍五入并保留固定小数位。语法如下:

numObj.toFixed(digits)

digits:小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。
返回值,返回使用定点表示法表示给定数字的字符串

const pi = 3.14159265359;
console.log(pi.toFixed(2)); // 3.14
console.log(pi.toFixed(3)); // 3.142

固定长度:

.toPrecison() 也是 Number 原型上实现的一个处理浮点数的方法,和 toFixed 不同的是,它是对一个浮点数进行四舍五入并保留固定长度的有效数字,包括整数部分。语法如下:

numObj.toPrecision(precision)

precision:可选,一个用来指定有效数个数的整数。
返回值,以定点表示法或指数表示法表示的一个数值对象的字符串表示,四舍五入到 precision 参数指定的显示数字位数。

const pi = 3.14159265359;
console.log(pi.toPrecision(3)); // 3.14
console.log(pi.toPrecision(4)); // 3.142

向下取整:

Math.floor() 返回小于或等于一个给定数字的最大整数。

Math.floor(x)

x:一个数字。

返回值,一个表示小于或等于指定数字的最大整数的数字。

console.log(Math.floor(9.005)); // 9
console.log(Math.floor(9.51)); // 9
console.log(Math.floor(9.49)); // 9
console.log(Math.floor(9.999)); // 9

5.生成随机数

通过Math.random() 返回 0-1 之间的随机数的原理,结果乘以最大数并四舍五入即可获得一个介于 0 和 max 之间的数字。

const randomNumber = (max) => Math.round(Math.random() * max);
console.log(randomNumber(100));

进一步完善上面的方法以可以获取指定最小和最大范围的随机数。

const randomNumber = (min, max) =>
    Math.round(Math.random() * (max - min) + min);
    console.log(randomNumber(51, 100));

数学函数 Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法,Math 不是一个函数对象,Math 用于 Number 类型,但它不支持 BigInt。

三、总结

JavaScriptNumber 对象是经过封装的能让你处理数字值的对象。介绍了JavaScript 中唯一的“无限”(非有限)数子:Infinity,-Infinity 和 NaN ,并提供了一些常用的数字处理方法。

到此这篇关于JavaScript数据结构Number的文章就介绍到这了,更多相关JavaScript-Number内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript数据结构Number

本文链接: https://www.lsjlt.com/news/139664.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript数据结构Number
    目录前言:一、NaN和Infinity二、常用方法1.安全数字2.整数判断3.数字格式判断4.四舍五入5.生成随机数三、总结前言: Number 是JavaScript的基本数据结构...
    99+
    2022-11-13
  • JavaScript数据结构Number实例分析
    本文小编为大家详细介绍“JavaScript数据结构Number实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript数据结构Number实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-29
  • JavaScript基本数据结构(转)
    JavaScript基本数据结构(转)[@more@]  JavaScript提供脚本语言的编程与C++非常相似,它只是去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库。对于已经具备C++或C语言的人来说,学习JavaScri...
    99+
    2023-06-03
  • 什么是JavaScript数据结构
    这篇文章主要介绍“什么是JavaScript数据结构”,在日常操作中,相信很多人在什么是JavaScript数据结构问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Jav...
    99+
    2022-10-19
  • javascript有没有数据结构
    这篇文章主要讲解了“javascript有没有数据结构”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript有没有数据结构”吧! ...
    99+
    2022-10-19
  • JavaScript数据结构与算法
    目录前言数据结构常见的数据结构算法算法的特征算法的目标总结前言 数据结构与算法这个词相信大家都听过、了解过、学过,那为什么要学习数据结构与算法呢?我感觉有以下两个原因: 为了一个比较...
    99+
    2022-11-13
  • JavaScript队列数据结构详解
    目录什么是队列?JavaScript中的队列JavaScript中的应用场景最近的请求次数补充总结写在前面: 在上一篇文章中介绍了栈这个数据结构,这篇文章介绍一下队列。 什么是队列?...
    99+
    2022-11-13
  • JavaScript树形数据结构处理
    目录树形数据的一些相关处理方法1. 递归查找当前节点2. 递归获取当前节点及以下的所有节点id3. 递归判断所有后代节点中有无此节点中的一个4. 递归树形数据扁平化5. 扁平化数据转...
    99+
    2022-11-13
  • JavaScript的Set数据结构详解
    目录1. 什么是 Set2. Set 构造函数2.1) 数组2.2) 字符串2.3) arguments2.4) Node...
    99+
    2022-11-12
  • JavaScript中的Map数据结构详解
    目录1. 什么是 Map2. Map 构造函数2.1) 数组2.2) Set2.3) Map3. Map 的实例属性和方法...
    99+
    2022-11-13
  • JavaScript的Set数据结构是什么
    JavaScript的Set数据结构是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 什么是 SetSet 可以简单的看作是数学上的集合。它是一系列无...
    99+
    2023-06-22
  • JavaScript 数据结构之字典方法
    目录一、什么是字典二、创建字典类1.hasKey 方法2.set 方法3.remove 方法4.get 方法5.keys, values, keyValues 方法6.forEach...
    99+
    2022-11-13
  • JavaScript数据结构与栈实例分析
    今天小编给大家分享一下JavaScript数据结构与栈实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2022-10-19
  • JavaScript 数据结构之集合创建(1)
    目录一、什么是集合二、创建集合类1.has 方法2.add 方法3.delete 和 clear 方法4.size 方法5.values 方法三、使用集合总结前言: 集合这个词应该比...
    99+
    2022-11-13
  • JavaScript 数据结构之集合创建(2)
    目录前言一、集合运算1.并集2.交集3.差集4.子集二、使用集合运算三、总结前言 上一篇JavaScript 数据结构 之集合创建(1)我们介绍了什么是集合,并且...
    99+
    2022-11-13
  • Javascript中扁平化数据结构与JSON树形结构转换详解
    目录一. 先说简单的树形结构数扁平化处理二. 再讲将扁平化数据结构转JSON树状形结构扩充一个知识点:for in 与 for of 的区别 :总结不废话,直接开干 一. 先说简单的...
    99+
    2022-11-13
  • python数据结构
    一:数据结构  数据结构可以认为他们是用来处理一些数据的或者说是存储数据。  对于数据结构的介绍会关系到类和对象的定义,此处对这两个定义加以描述。  何为类:说道类首先我们能够想到类型,在数据结构中类型有哪些常用的类型有int整型,floa...
    99+
    2023-01-31
    数据结构 python
  • Redis 数据结构
      一、Redis简介  Redis是一款基于key-value的高性能NoSQL数据库,开源免费,遵守BSD协议。支持string(字符串) 、 hash(哈希) 、list(列表) 、 set(集合) 、 zset(有序集合)等数据结构...
    99+
    2021-04-13
    Redis 数据结构
  • Redis数据结构
    一、String string的应用场景 分布式锁 布隆过滤器 缓存 自增、自减:统计计数 分布式主键ID生成:incrby orderId 10000  一次获取批量的ID ,批量获取减少与Redis交互的频率。 session共享 ...
    99+
    2015-06-04
    Redis数据结构
  • python 数据结构
    list(列表)创建list方式1  : 直接创建  theList = [1,2,3,4,5,6,7,8,9]                    ==> [1,2,3,4,5,6,7,8,9]方式2 : 使用内建方法list()...
    99+
    2023-01-31
    数据结构 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作