ES6学习笔记(5)----数值的扩展
参考书《ECMAScript 6入门》
http://es6.ruanyifeng.com/
数值的扩展
1.Number对象的扩展
(1)javascript的全局函数isNaN,isFinite,parseInt,parseFloat转为Number对象的函数
a. isNaN 与 Number.isNaN
相同点:都是用来判断数值是否是NaN
不同点:对于非数值的参数,isNaN会先用Number转化参数为数值类型,如果是NaN则返回true,如果不是,返回false;
而Number.isNaN,对于非数值的参数,一律返回false;
Number.isNaN('NaN') //false 非数值一律返回false
Number.isNaN(NaN) //true
isNaN('NaN') //true 非数值先转化成数值,然后再判断是否为NaN
isNaN(NaN) //true
b. isFinite 与 Number.isFinite
相同点:都用来判断数值是否有限
不同点:对于非数值的参数,isFinite会先用Number转化参数为数值类型,如果是有限的则返回true,如果不是,返回false;
而Number.isFinite,对于非数值的参数,一律返回false;
isFinite(1) //true
isFinite('1') //true 非数值先转换成数值,然后再判断是否有限
Number.isFinite(1) //true
Number.isFinite('1')//false 非数值一律返回false
c. parseInt 与 Number.parseInt 行为完全相同,parseFloat与Number.parseFloat 行为完全相同
(2)Number.isInteger 判断一个数值是否为整数
Number.isInteger(1) //true
Number.isInteger(1.0) //true
Number.isInteger(1.1)//false
如果参数的数值太大,十进制数转化成二进制数超过了53位,则不能保证准确性
(3)Number.EPSLION 常量(js能够表示的最小精度值 = 比1大的最小浮点数 - 1 = Math.pow(2,-52))
可用来做误差判断,如果计算结果小于这个误差,可以认为是无误差
(4)安全整数与Number.isSafeInteger
js 安全整数范围在-Math.pow(2,53)到 Math.pow(2,53)之间,超过这个范围就不准确了
Number.MAX_SAFE_INTEGER = 9007199254740991 = Math.pow(2,53) - 1
Number.MIN_SAFE_INTEGER = -9007199254740991 = - Math.pow(2,53) + 1 = - Number.MAX_SAFE_INTEGER
Number.isSafeInteger函数用来判断参数是否在此范围内
Number.isSafeInteger(Number.MAX_SAFE_INTEGER) //true
Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) //false
Number.isSafeInteger(Number.MIN_SAFE_INTEGER) //true
Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) //false
当Number.isSafeInteger是用来验证运算结果是否落在安全整数的范围内,不要只验证运算结果,而要同时验证参与运算的每个值,这样更准确
2.扩展的Math对象
Math.trunc() : 用于取得一个数的整数部分。如果参数是非数值,则先将参数转换成数值,再取整数部分,若是无法转化成数值的参数,则返回NaN
Math.trunc(1.23)//1
Math.trunc(1.78)//1
Math.trunc('')//0
Math.trunc(null)//0
Math.trunc('null')//NaN
Math.trunc(NaN)//NaN
Math.trunc('NaN')//NaN
Math.trunc(true)//1
Math.trunc('true')//NaN
Math.sign():用于返回一个数的符号为,若为正,则返回+1;若为负,则返回-1;若为0,则返回0;-0-->-0 +0--->+0;其他值返回NaN
Math.sign(123)//+1
Math.sign(-0.56)//-1
Math.sign(true)//+1
Math.sign(false) //+1
Math.sign(null) //0
参数为非数值时,会先转化成数值,再返回符号
Math.sign('')//0
Math.sign(true)//+1
Math.sign(false) //+1
Math.sign(null) //0
参数为非数值时,会先转化成数值,再返回符号,若无法转化成数值,则返回NaN
Math.sign('true') //NaN
Math.sign('false') //NaN
Math.sign('null') //NaN
Math.fround() : 用于返回一个数的32位单精度浮点数形式
Math.log10(X) : 返回以10为底的x的对数 X>0
Math.log2(X) :返回以2为底的x的对数 X>0
Math.hypot() : 返回所有参数的平方和的平方根
Math.hypot(3,4) // 5
Math.sinh()//双曲正弦
Math.cosh()//双曲余弦
Math.tanh()//双曲正切
Math.asinh()//双曲反正弦
Math.acosh()//双曲反余弦
Math.atanh()//双曲反正切
Math.imul() //返回两个整数相乘的结果(参数是32位的整数,结果也是32位的整数)
Math.clz32() //返回一个32位的整数有多少个前导0(不包含符号位)
1 == 00000000000000000000000000000001 // true
Math.clz32(1)//31
Math.clz32(00000000000000000000000000000001)//31
Math.cbrt() //返回参数的立方根
Math.cbrt(27) //3
Math.cbrt(8) //2
Math.log1p(x)//返回1+x的自然对数 Math.log1p(x) === Math.log(1+x) X>-1
Math.expm1(X)//e^x -1
ES6学习笔记(5)----数值的扩展的更多相关文章
- ES6学习笔记(三)——数值的扩展
看到这条条目录有没有感觉很枯燥,觉得自己的工作中还用不到它所以实在没有耐心看下去,我也是最近得闲,逼自己静下心来去学习去总结,只有在别人浮躁的时候你能静下心来去学去看去总结,你才能进步.毕竟作为前端不 ...
- es6学习笔记--字符串&数值&数组&函数&对象的扩展
这几天抽空学习了es6语法,关于字符串,数值,数组,函数以及对象的扩展,看到es6标准入门这本书,里面讲的扩展特别多,我认为有几部分在项目上用不到,就挑有用的当笔记学习了. 字符串的扩展 str.in ...
- es6学习笔记9--函数的扩展
函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接写在参 ...
- ES6 学习笔记之四 对象的扩展
ES6 为对象字面量添加了几个实用的功能,虽然这几个新功能基本上都是语法糖,但确实方便. 一.属性的简洁表示法 当定义一个对象时,允许直接写入一个变量,作为对象的属性,变量名就是属性名. 例1: , ...
- ES6学习笔记(一)——扩展运算符和解构赋值
前言 随着前端工程化的快速推进,在项目中使用ES6甚至更高的ES7等最近特性早已不是什么新鲜事.之前还觉得既然浏览器支持有限,那了解一下能看懂就好,然而仅仅了解还是不够的,现在放眼望去,那些成熟框架的 ...
- ES6学习笔记二:各种扩展
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7242967.html 一:字符串扩展 1:字符串遍历器 for (let char of str) { // ...
- ES6学习笔记(8)----对象的扩展
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 对象的扩展 1.属性名的简洁表示法 : ES6允许在代码中直接写变量,变量名是属性名,变量值是属 ...
- Es6学习笔记(7)----数组的扩展
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 数组的扩展 1.扩展运算符:可以将数组转化成逗号隔离的单个参数...[1,2,3] //控制台运 ...
- ES6学习笔记(6)----函数的扩展
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 函数的扩展 函数的默认值 : ES6可以为函数指定默认值 (1)指定默认值的两种方式 a.函数参 ...
随机推荐
- Bootloader与Kernel间参数传递机制 taglist【转】
本文转载自:http://blog.csdn.net/tommy_wxie/article/details/9187821 Tag list被用来在bootloader和Linux kernel 之间 ...
- 解决virtualbox安装增强工具失败的问题
virtualbox有个增强工具,安装之后用户体验是非常爽的.但是有些时候在安装增强工具会遇到一些小问题,无非是没有安装gcc,make之类的编译工具或是需要安装kernel*.而我遇到的问题在做了这 ...
- hdu(1007) 最近点对 分治法
最近点对一般想到枚举 ,一一枚举时间复杂度为n^2:枚举时候一些操作是多余的,有了分治算法的思想 ,把一些问题分个击破,再回到整体. 题目链接 以这道题为例,我们可以把他按照x轴的升序分成多个子区域 ...
- codeforces 414B B. Mashmokh and ACM(dp)
题目链接: B. Mashmokh and ACM time limit per test 1 second memory limit per test 256 megabytes input sta ...
- 利用百度地图API制作房产酒店地图
摘要: 想亲手制作一张酷讯.去哪儿.安居客.链接地产那样的房产.酒店地图麼?那赶快来学习吧.(以酷讯为例,如下图) 更多成功案例请点击:http://dev.baidu.com/wiki/map/in ...
- 【字符串】BZOJ上面几个AC自动机求最为字串出现次数的题目
(一下只供自己复习用,目的是对比这几个题,所以写得不详细.需要细节的可以参考其他博主) [BZOJ3172:单词] 题目: 某人读论文,一篇论文是由许多(N)单词组成.但他发现一个单词会在论文中出现很 ...
- 【JSOI 2007】建筑抢修
[题目链接] 点击打开链接 [算法] 将T2从小到大排序,当决策当前建筑修或不修时,若当前花费时间 + T1 <= T2,则修,否则判断T1是否小于之前修的 T1最大的建筑,若小于,则修,我们可 ...
- CMake命令之list
用途:提供一些列表操作 list(LENGTH <list><output variable>) list(GET <list> <elementindex ...
- codforces 1C Ancient Berland Circus(几何)
题意 给出正多边形上三个点的坐标,求正多边形的最小面积 分析 先用三边长求出外接圆半径(海伦公式),再求出三边长对应的角度,再求出三个角度的gcd,最后答案即为\(S*2π/gcd\),S为gcd对应 ...
- 51nod 1092【区间dp】
思路: 简单的区间dp,从小区间到大区间,随便写. 还有一种是那啥,n-LCS...具体不说了,赶时间)))= =. #include <stdio.h> #include <str ...