《javascript高级程序设计》笔记:Number类型

news/2023/12/9 16:54:07

进制表示

谈到Number类型,不得不提进制(此处不做过多介绍)
八进制字面值的第一位必须是零(0),然后是八进制数字序列(0~7)
十六进制字面值的前两位必须是 0x,后跟任何十六进制数字(0~9 及 A~F)

var intNum = 55;         // 整型

var octalNum1 = 070;     // 八进制的56
var octalNum2 = 079;     // 无效的八进制-解析为79

var hexNum1 = 0xA;       // 十六进制的10
var hexNum2 = 0x1f;      // 十六进制的31

浮点数值

所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。虽然小 数点前面可以没有整数,但我们不推荐这种写法。以下是浮点数值的几个例子:

var floatNum1 = 1.1;
var floatNum2 = 0.1;
var floatNum3 = .1; // 有效,但不推荐

由于保存浮点数值需要的内存空间是保存整数值的两倍,因此 ECMAScript 会不失时机地将浮点数值转换为整数值。显然,如果小数点后面没有跟任何数字,那么这个数值就可以作为整数值来保存。同样地,如果浮点数值本身表示的就是一个整数(如 1.0),那么该值也会被转换为整数,如下面的例子所示:

var floatNum1 = 1.; // 小数点后面没有数字——解析为 1 
var floatNum2 = 10.0; // 整数——解析为 10

对于那些极大或极小的数值,可以用 e 表示法(即科学计数法)表示的浮点数值表示。用 e 表示法表示的数值等于 e 前面的数值乘以 10 的指数次幂。ECMAScript 中 e 表示法的格式也是如此,即前面是一个数值(可以是整数也可以是浮点数),中间是一个大写或小写的字母 E,后面是10的幂中的指数,该幂值将用来与前面的数相乘。下面是一个使用 e 表示法表示数值的例子:

var floatNum = 3.125e7; // 等于31250000

注意: 0.1+0.2 !== 0.3

浮点类型精度控制的两个方法 toFixed / toPrecision

toFixed是Number原型上实现的一个方法,其作用是对一个浮点数进行四舍五入并保留固定小数位。 toFixed需要传递一个参数,其调用方式如下:

100.456001.toFixed(2); //100.47

100.456001.toFixed(3); //100.456

Number.prototype.toFixed.call(100.456001,2);  //100.47

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

99.456001.toPrecision(5);  //99.456

100.456001.toPrecision(5); //100.46

Number.prototype.toPrecision.call(10.456001,5);  //10.456

Infinity / -Infinity

由于内存的限制,ECMAScript 能够表示的最小数值为5e-324,能够表示的最大数值为1.7976931348623157e+308;

当超出这个范围时这个数值将被自动转换成特殊的 Infinity 值。具体来说,如果这个数值是负数,则会被转换成-Infinity(负无穷),如果这个数值是正数,则会被转换成 Infinity(正无穷)

通过 isFinite() 判断数值是否超出限制
非数字类型会先转换成数值类型再做判别
未超出限制返回true,超出限制返回false

isFinite(NaN); // false
isFinite(Infinity); // false
isFinite(-Infinity); // false
isFinite(0); // true
isFinite('a'); // false

NaN

NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。

两个特点:
(1)任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN
(2)NaN 与任何值都不相等,包括 NaN 本身

通过 isNaN() 判断变量是否为NaN
非数字类型会先转换成数值类型再做判别
不是数值返回true,是数值返回false

alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)

http://www.niftyadmin.cn/n/2209042.html

相关文章

3.5 栈排序

《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。 算法首先建立一个新的空栈rrr,如果需要排序的栈sss为空或者只有…

对javascript事件的深度理解

事件流 事件流是描述对页面接受事件的顺序,IE和Netscape提出了完全相反的事件流模型,描述的是从页面中接收事件的顺序,也可理解为事件在页面中传播的顺序。 我们通过平常使用知道addEventListener最后的参数是切换句柄的,当这个布尔值为true时…

3.6 动物收容所

《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。 算法构建了两个队列,一个存储猫,一个存储狗。一个猫…

4.1 节点间通路

《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。 这里采用广度优先搜索解决。 enum visitingStatus { visited, visiting, u…

Using an Image for the Layer’s Content

Using an Image for the Layer’s Content Because a layer is just a container for managing a bitmap image, you can assign an image directly to the layer’s contents property. Assigning an image to the layer is easy and lets you specify the exact image you wa…

阿里云P2P内容分发网络(PCDN)实操手册

一、 PCDN是定义? P2P 内容分发网络(英文名:P2P CDN,以下简称PCDN)是以P2P技术为基础,通过挖掘利用电信边缘网络海量碎片化闲置资源而构建的低成本高品质内容分发网络服务。客户通过集成PCDN SDK&#xff0…

[计算机组成原理]关于课本“基数越大,浮点数精度反而下降“的理解

知乎链接: 为什么浮点数基数越大精度越低?

4.2 最小高度树

《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。 算法利用递归解决。算法的时间复杂度为O(n)O(n)O(n),n为数组中元…

js图片链接转base64 转dataUrl

2019独角兽企业重金招聘Python工程师标准>>> const xhr new XMLHttpRequest(); xhr.open(GET, url);// 如果已指明,responseType 必须是空字符串或 "docuemnt" xhr.responseType blog;xhr.onload ()> {if (xhr.readyState xhr.DONE &a…

4.3 特定深度节点链表

《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。 以下算法采用深度优先搜索解决。该算法的时间复杂度和空间复杂度为O(n)O(n)…

Jupyter更改默认路径并设置用浏览器打开

1. Jupyter设置用浏览器打开 本文用 谷歌 浏览器做演示 前提: 用的 Anaconda 自带的 Jupyter 环境变量 path 要配置好 如下设置为系统变量 找到 jupyter 的配置文件 打开 cmd 输入 jupyter notebook --generate-config 可以看到我的 jupyter 的配置路径是 C:\Users…

有助于企业制定防御方案的十种黑客类型剖析

不同类别、不同规模与恶意活动本身一样,黑客群体也存在着多种表现形式,其动机亦涵盖经济型、政治型以及伦理诉求型等等。了解各种不同黑客类型能够帮助大家更为有效地识别与之对应的易受攻击目标,同时妥善保护您及您所在的组织免受网络攻击侵…

4.4 检查平衡性

《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。 以下算法中,getHeightgetHeightgetHeight方法用来计算一颗二叉树…

希捷BACKUP PLUS提供200G ONEDRIVE云存储

希捷科技公司日前宣布其备受赞誉的Backup Plus外置存储产品将提供一项高价值服务——200GB的OneDrive云存储服务,同时增加了Lyve照片和视频应用管理程序。Seagate Backup Plus硬盘配备希捷Dashboard软件,可轻松进行即插即用的PC电脑备份以及移动设备和社…

4.5 合法二叉搜索树

《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。 书中对二叉搜索树的定义为:一个二叉树中的所有节点,…

智存高远 华为存储迈进业界领先行列

2013年7月3日,华为存储产品线Marketing部长经宁先生给媒体分享了上半年存储市场的情况,以及华为存储产品线的表现。据经宁介绍,2013年第一季度,华为存储实现了一个新的飞跃,几个数字或许能够说明这些:中国区…
最新文章