ES6中的数值扩展
1. 二进制和八进制的表示法
二进制和八进制的前缀分别为0b(或0B)和0o(或0O)表示
在ES5的严格模式下,八进制不再允许使用前缀0
表示
如果要将0b
和0x
前缀的字符串数值转为十进制,要使用Number方法
Number('0b111'); // 7
Number('0o10'); // 8
2. Number.isFinite()、Number.isNaN()
Number.isFinite()
用来检测一个数值是否是有限的(finite)。
Number.isFinite(15); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite('foo'); // false
Number.isFinite(true); // false
Number.isNaN()
用来检测一个值是否为NaN
Number.isNaN(NaN); // true
Number.isNaN(14); // false
Number.isNaN('str'); // false
Number.isNaN(true); // false
Number.isNaN(9/NaN); // true
这两个方法与全局的isFinite()
和isNaN()
相比,之前的会先调用Number()将非数值转为数
值,然后再进行判断,这两个方法会直接判断,只对数值有效,其他非数值一律为false。
3. Number.parseInt()、Number.parseFloat()
只是将全局的方法移到了Number上
4. Number.isInteger()
用来判断一个值是否为整数,在js中整数和浮点数是同样的存储方法,所以3和3.0视为同一个数。
Number.isInteger(25); // true
Number.isInteger(25.0); // true
Number.isInteger(25.1); // false
Number.isInteger('25'); // false
Number.isInteger(true); // false
5. Number.EPSILON
规定一个极小的常量,目的是为了浮点数计算设置一个误差范围,因为浮点数计算是不准确,只要是误差小于这个常量默认就是得到了一个正确结果。
说白了就是一个可以接受的误差范围。
Number.EPSILON = 2.220446049250313e¯16
0.1 + 0.2 = 0.30000000000000004
6. 安全整数和Number.isSafeInteger()
因为在js中能够准确表示的整数范围是-2^53
到2^53
之间(不包含两个端点),超过这个范围就无法精确表示,所以可以使用Number.isSafeInteger()判断某个值是否是安全的。
Number.MAX_SAFE_INTEGER 代表js能准准确表示的最大值。
Number.MIN_SAFE_INTEGER 代表js能准准确表示的最小值。
Number.isSafeInteger(9) // true
Number.isSafeInteger('a') // false
Number.isSafeInteger(true) // false
Number.isSafeInteger(NaN) // false
Number.isSafeInteger(Infinity) // false
Number.isSafeInteger(-Infinity) // false
isSafeInteger函数是如何实现的
Number.isSafeInteger = function (n) {return (typeof n === 'number' && Math.round(n) === n && Number.MIN_SAFE_INTEGER <= n && n <= Number.MAX_SAFE_INIEGER);
}
在使用Number.isSafeInteger验证时,若有运算不仅要验证结果,也要验证参与运算的每个值,否则会出现问题。
Number.isSafeInteger(9007199254740993) // false
Number.isSafeInteger(900) // true
Number.isSafeInteger(9007199254740993 - 900) // true
9007199254740993 - 900 = 9007199254740002
可以看出9007199254740993不是安全整数,但是计算结果却是安全的。这是因为数据超出了精度范围,就会以最大值存储。
7. Math对象的扩展
1. Math.trunc()
用来去除一个数的小数部分,返回整数部分。
Math.trunc(4.1); // 4
Math.trunc(4.9); // 4
Math.trunc(-4.1); // 4
Math.trunc(-4.0); // 4
Math.trunc(-0.12); // 0
对于非数值会先使用Number转化,会向下取整。
Math.trunc('123.23'); // 123
对于空值和无法截取的整数返回NaN
Math.trunc(NaN); // NaN
Math.trunc('foo'); // NaN
Math.trunc(); // NaN
对于不支持该方法,可以用此代码代替
Math.trunc = Math.trunc || function(x) {return x < 0 ? Math.ceill(x) : Math.floor(x);
}
2. Math.sign()
用来判断一个数到底是正数、负数还是零,对于非数值,会先将其转化为数值。
- 参数为正数,返回 +1
- 参数为负数,返回-1
- 参数0,返回0
- 参数-0,返回0
- 其他值,返回NaN
对于不支持该方法,可以用此代码代替
Math.sign = Math.sign || function(x) {x = +x; // convert to a numberif (x === 0 || isNaN(x)) {return x;}return x > 0 ? 1 : -1;
}
3. Math.cbrt()
用来计算一个数的立方根
Math.cbrt(-1); // -1
Math.cbrt(1); // 1
Math.cbrt(8); // 2
对于非数值,会先使用Number进行转换
对于不支持该方法,可以用此代码代替
Math.cbrt = Math.cbrt || function (x) {var y = Math.pow(Math.abs(x), 1/3);return x < 0 ? -y : y;
}
4. Math.fround()
返回一个数的单精度浮点数形式
Math.fround(0); // 0
Math.fround(1); // 1
Math.fround(1.337); // 1.3370000123977661
Math.fround(NaN); // NaN
对于不支持该方法,可以用此代码代替
Math.fround = Math.fround || function(x) {return new Float32Array([x])[0];
}
相关文章:
ES6中的数值扩展
1. 二进制和八进制的表示法 二进制和八进制的前缀分别为0b(或0B)和0o(或0O)表示 在ES5的严格模式下,八进制不再允许使用前缀0表示 如果要将0b和0x前缀的字符串数值转为十进制,要使用Number方法 Number(0b111); // 7 Number(0o10); // 82. Number.isF…...
自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能
自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能 文章目录 [toc] 1.依赖2.Redisson配置2.1单机模式配置2.2主从模式2.3集群模式2.4哨兵模式 3.实现3.1 RedisConfig3.2 自定义注解IdempotentManualCtrlTransLimiterAnno3.3自定义切面Idempote…...
Linux:minishell
目录 1.实现逻辑 2.代码及效果展示 1.打印字符串提示用户输入指令 2.父进程拆解指令 3.子进程执行指令,父进程等待结果 4.效果 3.实现过程中遇到的问题 1.打印字符串的时候不显示 2.多换了一行 3.cd路径无效 4.优化 1.ll指令 2.给文件或目录加上颜色 代码链接 模…...
STM32驱动步进电机
前言 (1)本章介绍用stm32驱动42步进电机,将介绍需要准备的硬件器材、所需芯片资源以及怎么编程及源代码等等。 (2)实验效果:按下按键,步进电机顺时针或逆时针旋转90度。 (3ÿ…...
计算机视觉——飞桨深度学习实战-深度学习网络模型
深度学习网络模型的整体架构主要数据集、模型组网以及学习优化过程三部分,本章主要围绕着深度学习网络模型的算法架构、常见模型展开了详细介绍,从经典的深度学习网络模型以CNN、RNN为代表,到为了解决显存不足、实时性不够等问题的轻量化网络…...
用c动态数组(不用c++vector)实现手撸神经网咯230901
用c语言动态数组(不用c++的vector)实现:输入数据inputs = { {1, 1}, {0,0},{1, 0},{0,1} };目标数据targets={0,0,1,1}; 测试数据 inputs22 = { {1, 0}, {1,1},{0,1} }; 构建神经网络,例如:NeuralNetwork nn({ 2, 4,3,1 }); 则网络有四层、输入层2个nodes、输出层1个节点、第…...
视频讲解|基于DistFlow潮流的配电网故障重构代码
目录 1 主要内容 2 视频链接 1 主要内容 该视频为基于DistFlow潮流的配电网故障重构代码讲解内容,对应的资源下载链接为基于DistFlow潮流的配电网故障重构(输入任意线路),对该程序进行了详尽的讲解,基本做到句句分析和讲解(讲解…...
Ultralytics(YoloV8)开发环境配置,训练,模型转换,部署全流程测试记录
关键词:windows docker tensorRT Ultralytics YoloV8 配置开发环境的方法: 1.Windows的虚拟机上配置: Python3.10 使用Ultralytics 可以得到pt onnx,但无法转为engine,找不到GPU,手动转也不行࿰…...
springboot之@ImportResource:导入Spring配置文件~
ImportResource的作用是允许在Spring配置文件中导入其他的配置文件。通过使用ImportResource注解,可以将其他配置文件中定义的Bean定义导入到当前的配置文件中,从而实现配置文件的模块化和复用。这样可以方便地将不同的配置文件进行组合,提高…...
阿里云服务器免费申请入口_注册阿里云免费领4台服务器
注册阿里云账号,免费领云服务器,最高领取4台云服务器,每月750小时,3个月免费试用时长,可快速搭建网站/小程序,部署开发环境,开发多种企业应用。阿里云百科分享阿里云服务器免费领取入口、免费云…...
ES6中的async、await函数
async是为了解决异步操作,其实是一个语法糖,使代码书写更加简洁。 1. async介绍 async放在一个函数的前面,await则放在异步操作前面。async代表这个函数中有异步操作需要等待结果,在一个async函数中可以存在多个await࿰…...
代码随想录算法训练营第五十六天 | 动态规划 part 14 | 1143.最长公共子序列、1035.不相交的线、53. 最大子序和(dp)
目录 1143.最长公共子序列思路代码 1035.不相交的线思路代码 53. 最大子序和(dp)思路代码 1143.最长公共子序列 Leetcode 思路 本题和718. 最长重复子数组 区别在于这里不要求是连续的了,但要有相对顺序,即:“ace” …...
【数据挖掘】2021年 Quiz 1-3 整理 带答案
目录 Quiz 1Quiz 2Quiz 3Quiz 1 Problem 1 (30%). Consider the training data shown below. Here, A A A and B B B</...
【软件设计师-中级——刷题记录6(纯干货)】
目录 管道——过滤器软件体系结构风格优点:计算机英语重点词汇:单元测试主要检查模块的以下5个特征:数据库之并发控制中的事务:并发产生的问题解决方案:封锁协议原型化开发方法: 每日一言:持续更新中... 个…...
微信小程序点单左右联动的效果实现
微信小程序点单左右联动的效果实现 原理解析: 点击左边标签会跳到右边相应位置:点击改变rightCur值,转跳相应位置滑动右边,左边标签会跳到相应的位置:监听并且设置每个右边元素的top和bottom,再判断当…...
Socket通信
优质博文IT-BLOG-CN 一、简介 Socket套接字:描述了计算机的IP地址和端口,运行在计算机中的程序之间采用socket进行数据通信。通信的两端都有socket,它是一个通道,数据在两个socket之间进行传输。socket把复杂的TCP/IP协议族隐藏在…...
TCP 如何保证有效传输及拥塞控制
TCP(传输控制协议)可以通过以下机制保证有效传输和拥塞控制: 确认机制:TCP使用确认机制来保证数据的有效传输。发送方在发送数据的同时还会发送一个确认请求,接收方收到数据后会回复确认响应。如果发送方没有收到确认响…...
PyQt5+Qt设计师初探
在上一篇文章中我们搭建好了PyQt5的开发环境,打铁到趁热我们基于搭建好的环境来简单实战一把 一:PyQt5包模块简介 PyQt5包括的主要模块如下。 QtCore模块——涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及的时间、文件、目录、数…...
rust cargo
一、cargo是什么 Cargo是Rust的构建工具和包管理器。 Cargo除了创建工程、构建工程、运行工程等功能,还具有下载依赖库、编译依赖等功能。 真正编写程序时,我们不直接用rustc,而是用cargo。 二、使用cargo (一)使用…...
CANoe.Diva生成测试用例
Diva目录 一、CANoe.Diva打开CDD文件二、导入CDD文件三、ECU Information四、时间参数设置五、选择是否测试功能寻址六、勾选需要测试服务项七、生成测试用例 一、CANoe.Diva打开CDD文件 CANoe.Diva可以通过导入cdd或odx文件,自动生成全面的测试用例。再在CANoe中导…...
openGauss学习笔记-89 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用查询原生编译
文章目录 openGauss学习笔记-89 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用查询原生编译89.1 查询编译:PREPARE语句89.2 运行命令89.3 轻量执行支持的查询89.4 轻量执行不支持的查询89.5 JIT存储过程89.6 MOT JIT诊断89.6.1 mot_jit_detai…...
python获取时间戳
使用 datetime 库获取时间。 获取当前时间: import datetime print(datetime.datetime.now()) . 后面的是微秒,也是一个时间单位,1秒1000000微秒。 转为时间戳: import datetimedate datetime.datetime.now() timestamp date…...
2023年山东省安全员C证证考试题库及山东省安全员C证试题解析
题库来源:安全生产模拟考试一点通公众号小程序 2023年山东省安全员C证证考试题库及山东省安全员C证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大…...
Java中的Unicode字符编码与占用比特位解析
本文将详细介绍Java中Unicode字符编码与占用比特位的相关知识。我们将首先介绍Unicode字符集的基本概念,然后深入探讨Java中Unicode字符的编码方式以及占用比特位的特点。最后,我们将讨论一些特殊字符的编码情况,并给出一些在Java中处理Unico…...
分布式事务-TCC案例分析流程图
防止cancel方法在最后执行出现问题,用户收到提示已经退款成功但是由于cancel过慢或者出现问题(虽然最后会重试成功但是用户体验很差),可以做以下的业务sql模型优化(增加一个冻结金额)。...
究竟是什么样的讲解数组算法的博客让我写了三小时???
版本说明 当前版本号[20231004]。 版本修改说明20231004初版 目录 文章目录 版本说明目录二. 基础数据结构2.1 数组1) 概述2) 动态数组1)插入addlast 方法测试: addlast 方法 add 方法测试:add方法 addlast 方法与 add 方法合并版get 方法测试&#x…...
Day-05 CentOS7.5 安装docker
参考 : Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/install/centos/ Doc…...
Makefile
目录 Makefile Makefile格式 Makefile函数:foreach和wildcard $(foreach var,list,text) $(wildcard pattern) 完善Makefile Makefile 在Linux中使用make工具来编译程序(特别是大程序),而make工具所执行的动作依赖于Makefil…...
c语言练习77:公因⼦的数⽬
公因⼦的数⽬ 题⽬描述: 给你两个正整数 a 和 b ,返回 a 和 b 的公因⼦的数⽬。 如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的⼀个公因⼦ 。 • ⽰例 1: 输⼊:a 12, b 6 输出:4 解释&#…...
【C++】C++11——右值引用和移动语义、左值引用和右值引用、右值引用使用场景和意义、完美转发、新的类功能
文章目录 C115.右值引用和移动语义5.1左值引用和右值引用5.2左值引用与右值引用比较5.3右值引用使用场景和意义5.4右值引用引用左值及其一些更深入的使用场景分析5.5完美转发 6.新的类功能 C11 5.右值引用和移动语义 右值引用是C11引入的一个新特性,用于支持移动语义…...
汕头建设网站/白度
Creating Menus android 菜单包括三种.Options Menu , Context Menu 和Submenu. 本文完整代码 CSDN下载频道 :http://download.csdn.net/source/2900952 , 1.Options Menu(选项菜单) 方法1 需要重写public boolean onCreateOptionsMenu(Menu menu)和 public boolean onOp…...
网站开发的需求分析教学视频/seo推广宣传
文章目录前言前言 输入法右键,选择高级设置 选择自定义短语 设置单词缩写触发自定义短语 短语使用获得日期的代码即可 #$(year)年$(month_mm)月$(day_dd)日 星期$(weekday_cn) $(fullhour):$(minute):$(second)此格式为 2022年02月24日 星期四 18:29:07 可以根…...
做网站要排版吗/太原seo公司
centos7性能调优 tuned 守护进程会利用反映特定工作负载要求的调优配置文件,以静态和动态两种方式应用调优调整。 调优分为静态调优、动态调优 静态调优 tuned 守护进程会在服务启动时或选择新的调优配置文件时应用系统设置。静态调优会对配置文件中由 tuned 在运…...
wordpress 邮箱变更/好的seo公司营销网
一、路由基础Routing protocol 用于路由器动态寻找最优路径,并使路由器都拥有路由表,R/p 决定了数据包的上行路径,eg:RIP IGRP EIGRP OSPF,被动路由协议被分配到接口上并决定数据数据包的传送方式, Router:把一个数据包…...
室内设计联盟模型下载/seo推广优化
近期,JetBrains发布了其旗舰产品IntelliJ IDEA的2018.2版本。新版本支持即将推出的Java 11、断点意图(Breakpoints Intentions)、MacBook的Touch Bar等特性,并改进了Spring Boot、Scala和Docker插件。\\Java\\IntelliJ IDEA 2018.…...
电子商务网站建设的结论/淘宝指数查询官网
1、按本站或各区域城市组织各位妈妈们在网站以宝宝照片经验交流形式SHOW自己可爱的宝宝,可按月、季、年设擂台,当然各擂主要设奖品:),奖品以后可由各赞助商提供; 2、宝宝SHOW分类: 2.1、【Bab…...