1. JavaScript只有一种数值类型Number。(没有其它语言的short、int、long、float、double)

2. 书写数值时带不带小数点均可。

3. JavaScript数值始终是64位的浮点数

3.1. JavaScript数值始终以双精度浮点数来存储, 根据国际IEEE 754标准。

3.2. 此格式用64位存储数值, 其中0到51存储数字(片段), 52到62存储指数, 63位存储符号:

3.3. 整数类型的范围: 5e-324 ~ 1.7976931348623157e+308。

3.4. 值得注意的是, 对于整数的位运算(比如位移等操作), JavaScript仅支持32位整型数, 也即从-2147483648到+2147483647之间的整数。

4. 精度

4.1. 整数会被精确到15位:

var a = 999999999999999;   // a是15位整数最大值, 能保证精度, 是999999999999999
var b = 9999999999999997;  // b是16位整数, 不保证精度
var c = 9999999999999999; // c是16位整数, 不保证精度
// 15位的整数进行数学运行能够保证精准
var d = (((999999999999999 - 100000 - 1) / 2 - 9999) / 4 * 8 + 111999 + 8000) / 9 / 3 + 960900000000000;

4.2. 小数在进行数学运算的时候最大数是17位, 但是浮点的算数并不总是100%精准:

var e = 0.2 + 0.1; // 小数在进行数学运算的时候最大数是17位
var f = 0.3 - 0.2111; // 小数在进行数学运算的时候最大数是17位
var g = 0.001 + 1.1; // 并不总是17位小数
// 我们在对小说进行算数运算的时候, 通常对小说进行扩大10的几次方, 计算完成后, 再除以这个10的几次方
var h = (0.3 * 10000 - 0.2111 * 10000) / 10000; 

5. 科学计数法

5.1. 超大或超小的数可通过科学计数法来写。

5.2. 大于等于le+21的数字会自动使用科学计数法输出。

5.3. 小于le+21的数字纵然我们用科学计数法表示, 但输出时也会是完整数字。

5.4. 默认把具有6个或6个以上前导0的浮点数转换成科学计数法。

var i = 9.99999999999999930000e20; // 小于le+21的数字纵然我们用科学计数法表示, 但输出时也会是完整数字。
var j = 9.99999999999999940000e20; // 发生了舍入, 大于le+21, 使用科学计数法输出
var k = 1e21; // 科学计数法
var l = 0.0000001; // 默认把具有6个或6个以上前导0的浮点数转换成科学计数法。

6. 数字字符串

6.1. JavaScript字符串可以拥有数字内容。

6.2. 在所有数字运算中, JavaScript会尝试将字符串转换为数字。

6.3. 实例

var m = '100' / '10'; // 结果是10
var n = '100' * '10'; // 结果是1000
var o = '100' - '10'; // 结果是90

7. NaN-非数值

7.1. NaN 属于 JavaScript 保留词,指示某个数不是合法数。

7.2. 尝试将一个字符串完整的转换成数字时, 如果转换失败, 就会得到NaN(Not a Number)。

7.3. isNaN()函数

7.3.1. 您可使用全局JavaScript函数isNaN()来确定某个值是否是非数字值。

7.3.2. 语法

isNaN(x)

7.3.3. 参数

7.3.4. 如果x是特殊的非数字值NaN(或者是被转换为这样的值), 返回的值就是true。如果x是其他值, 则返回false。

7.3.5. 如果把NaN与任何值(包括其自身)相比得到的结果均是false, 所以要判断某个值是否是NaN, 不能使用==或===运算符。正因为如此, isNaN()函数是必需的。

7.4. NaN是数值类型: typeOf NaN返回number。

7.5. 实例

var u = isNaN("111"); // 返回false
var v = isNaN("111a"); // 返回true
var w = isNaN(NaN); // 返回true, 因为NaN不是数
var x = typeof(NaN); // 返回number

8. 无穷数

8.1. Infinity(或-Infinity)是JavaScript在计算数时超出最大可能数范围时返回的值。

8.2. Infinity是数值类型: typeOf Infinity返回number。

8.3. isFinite()函数

8.3.1. 您可使用全局JavaScript函数isFinite()检查某个值是否为有穷大的数。

8.3.2. 语法

isFinite(number)

8.3.3. 参数

8.3.4. 如果number是有限数字或可转换为有限数字, 那么返回true。否则, 如果number是NaN(非数字)或者是正、负无穷大的数, 则返回false。

var y = isFinite(111); // 返回true
var z = isFinite("111"); // 返回true
var A = isFinite("111a"); // 返回false
var B = isFinite(Infinity); // 返回false, 因为Infinity是正无穷大
var C = isFinite(-Infinity); // 返回false, 因为-Infinity是负无穷大
var D = isFinite(NaN); // 返回false, 因为NaN非数字
var E = typeof(Infinity); // 返回number
var F = typeof(-Infinity); // 返回number
var G = isNaN(Infinity); // 返回false, 因为Infinity是正无穷数
var H = isNaN(-Infinity); // 返回false, 因为-Infinity是负无穷数

9. 数字和字符串相加

9.1. JavaScript的加法和级联(concatenation)都使用+运算符。数字用加法, 字符串用级联。

9.2. 如果对两个字符串相加,结果将是一个字符串的级联:

var x = "10";
var y = "20";
var z = x + y;           // z 将是 1020(字符串)

9.3. 如果您对一个数和一个字符串相加, 结果也是字符串级联:

var x = 10;
var y = "20";
var z = x + y;           // z 将是 1020(一个字符串)

9.4. 两个或多个数字算数运算, 并且在语句最左侧(JavaScript从左向右进行编译), 之后又和字符串级联, 这种情况会先进行算数运算再和字符串级联。

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z; // 因为x和y都是数, 10+20将被相加。因为z是字符串, 30+"30"被级联。

10. 进制

10.1. 计算机中常见的进制是: 二进制、八进制、十进制和十六进制。

10.2. 八进制字面量的首数字必须是0, 其后的数字可以是任何八进制数字(0-7)。

var x = 011;             // x将是9

10.3. 十六进制字面量以0x或0X前缀开头, 然后是任意的十六进制数字(0到9和A到F)。

var x = 0xFF;             // x将是255

10.4. 默认地, Javascript把数显示为十进制数。

10.5. 尽管所有整数都可以表示为八进制或十六进制, 但所有数学运算返回的都是十进制结果。

11. 例子

11.1. 代码

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>JavaScript数字</title></head><body><script type="text/javascript">var a = 999999999999999;   // a是15位整数最大值, 能保证精度, 是999999999999999var b = 9999999999999997;  // b是16位整数, 不保证精度var c = 9999999999999999; // c是16位整数, 不保证精度// 15位的整数进行数学运行能够保证精准var d = (((999999999999999 - 100000 - 1) / 2 - 9999) / 4 * 8 + 111999 + 8000) / 9 / 3 + 960900000000000;var e = 0.2 + 0.1; // 小数在进行数学运算的时候最大数是17位var f = 0.3 - 0.2111; // 小数在进行数学运算的时候最大数是17位var g = 0.001 + 1.1; // 并不总是17位小数// 我们在对小说进行算数运算的时候, 通常对小说进行扩大10的几次方, 计算完成后, 再除以这个10的几次方var h = (0.3 * 10000 - 0.2111 * 10000) / 10000; var i = 9.99999999999999930000e20; // 小于le+21的数字纵然我们用科学计数法表示, 但输出时也会是完整数字。var j = 9.99999999999999940000e20; // 发生了舍入, 大于le+21, 使用科学计数法输出var k = 1e21; // 科学计数法var l = 0.0000001; // 默认把具有6个或6个以上前导0的浮点数转换成科学计数法。// 在所有数字运算中, JavaScript会尝试将字符串转换为数字。var m = "100" / "10"; // 结果是10var n = "100" * "10"; // 结果是1000var o = "100" - "10"; // 结果是90var p = "10" + "20";  // 结果是1020var q = 10 + "20"; // 结果是1020var r = "10" + 20; // 结果是1020var s = 10 + 20 + "30"; // 结果是3030var t = 10 + "20" + 30; // 结果是102030var u = isNaN("111"); // 返回falsevar v = isNaN("111a"); // 返回truevar w = isNaN(NaN); // 返回true, 因为NaN不是数var x = typeof(NaN); // 返回numbervar y = isFinite(111); // 返回truevar z = isFinite("111"); // 返回truevar A = isFinite("111a"); // 返回falsevar B = isFinite(Infinity); // 返回false, 因为Infinity是正无穷大var C = isFinite(-Infinity); // 返回false, 因为-Infinity是负无穷大var D = isFinite(NaN); // 返回false, 因为NaN非数字var E = typeof(Infinity); // 返回numbervar F = typeof(-Infinity); // 返回numbervar G = isNaN(Infinity); // 返回false, 因为Infinity是正无穷数var H = isNaN(-Infinity); // 返回false, 因为-Infinity是负无穷数var I = 011; // 八进制数, E将是9var J = 0xFF; // 十六进制数, F将是255document.write('a = ' + a + '<br />');document.write('b = ' + b + '<br />');document.write('c = ' + c + '<br />');document.write('d = ' + d + '<br />');document.write('e = ' + e + '<br />');document.write('f = ' + f + '<br />');document.write('g = ' + g + '<br />');document.write('h = ' + h + '<br />');document.write('i = ' + i + '<br />');document.write('j = ' + j + '<br />');document.write('k = ' + k + '<br />');document.write('l = ' + l + '<br />');document.write('"100" / "10" = ' + m + '<br />');document.write('"100" * "10" = ' + n + '<br />');document.write('"100" - "10" = ' + o + '<br />');document.write('"10" + "20" = ' + p + '<br />');document.write('10 + "20" = ' + q + '<br />');document.write('"10" + 20 = ' + r + '<br />');document.write('10 + 20 + "30" = ' + s + '<br />');document.write('10 + "20" + 30 = ' + t + '<br />');document.write('isNaN("111") = ' + u + '<br />');document.write('isNaN("111a") = ' + v + '<br />');document.write('isNaN(NaN) = ' + w + '<br />');document.write('typeof(NaN) = ' + x + '<br />');document.write('isFinite(111) = ' + y + '<br />');document.write('isFinite("111") = ' + z + '<br />');document.write('isFinite("111a") = ' + A + '<br />');document.write('isFinite(Infinity) = ' + B + '<br />');document.write('isFinite(-Infinity) = ' + C + '<br />');document.write('isFinite(NaN) = ' + D + '<br />');document.write('typeof(Infinity) = ' + E + '<br />');document.write('typeof(-Infinity) = ' + F + '<br />');document.write('isNaN(Infinity) = ' + G + '<br />');document.write('isNaN(-Infinity) = ' + H + '<br />');document.write('I = ' + I + '<br />');document.write('J = ' + J + '<br />');</script></body>
</html>

11.2. 效果图

022_JavaScript数字相关推荐

  1. 力扣解题——求根到叶子节点数字之和

    难度:中等 题目:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 123. 计算从根到 ...

  2. C++ 笔记(35)— std::to_string 转换整形数字为字符串

    1. 函数原型 string to_string (int val); string to_string (long val); string to_string (long long val); s ...

  3. pandas dataframe 字符映射为数字

    在机器学习中对于有序的类别型变量可以不采用onehot编码,直接使用有序数字代替即可,这个目的可以在pandas中使用map方法实现. import pandas as pd 创建数据框 raw_da ...

  4. 用0到9十个数字,每个数字使用一次,构成两个五位数a和b,并且a+20295=b.求a,b

    方法1: 这是一开始想到的方法,代码稍微有点长. 首先,确定a数的范围,然后,取出a数其他位数上的数,存入列表中,a数各位上的数进行比较,然后根据a求出b的值,然后对b进行筛选,选出符合要求的b值.具 ...

  5. LeetCode简单题之有多少小于当前数字的数字

    题目 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i ...

  6. LeetCode中等题之重排数字的最小值

    题目 给你一个整数 num .重排 num 中的各位数字,使其值 最小化 且不含 任何 前导零. 返回不含前导零且值最小的重排数字. 注意,重排各位数字后,num 的符号不会改变. 示例 1: 输入: ...

  7. LeetCode简单题之字符串转化后的各位数字之和

    题目 给你一个由小写字母组成的字符串 s ,以及一个整数 k . 首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,'a' 用 1 替换,'b' 用 2 替换,- 'z' 用 ...

  8. LeetCode简单题之K 进制表示下的各位数字总和

    题目 给你一个整数 n(10 进制)和一个基数 k ,请你将 n 从 10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的 总和 . 转换后,各位数字应当视作是 10 进制数字,且它们的总和 ...

  9. LeetCode简单题之检查句子中的数字是否递增

    题目 句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格.每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文 ...

最新文章

  1. 选择之后触_如果有朋友在做选择时左右为难,我应该该给出什么样的建议
  2. SSH,telnet终端中文显示乱码解决办法
  3. 单片机c语言程序设计叶俊明,单片机C语言程序设计
  4. 雷赛运动控制卡能不能用c语言_基于PMAC控制卡的三坐标测量机控制系统
  5. python 描述性分析_描述性分析-1对被解释变量进行描述
  6. mysql 内存性能优化
  7. C语言必背100代码,C语言必会100代码大全
  8. MacOS iNode客户端连接SSL
  9. 笔记本开机密码忘记了怎么解决,消除笔记本密码
  10. go 语言最详细的入门教程
  11. 分享受用一生的高效 PyCharm 使用技巧。
  12. 个人博客/博客管理系统/Siteserver cms
  13. 基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程
  14. 读硕士和读博士有什么区别?
  15. 又到年末“团建”!某企业员工吐槽:这真是一场噩梦……
  16. android8 Camera2 从 CameraService 到 HAL Service
  17. 基于 Kintex UltraScale 系列 FPGA 的高性能 VPX 数据预处理载板(4 路 SRIO X4、 XCKU115-2FFVA1517I)
  18. php同步到百度云,linux 备份定时同步到百度云盘
  19. C++实验3— 个人所得税计算器
  20. 校园超市购物小程序 计算机毕业设计

热门文章

  1. 附加数据库失败,无法升级数据库,因为它是只读的
  2. GRUB引导另一个主分区
  3. 如何在MDI中相同的子窗体只保留一个实例
  4. 云机搭jdk1.8和apache-tomcat
  5. 服务器安全防护和保护措施方案—Vecloud
  6. MPLS多协议标签交换原理—Vecloud微云
  7. 设置Tomcat字符集为utf-8
  8. tar用法实例 tar命令
  9. python_day6.2
  10. 块存储,文件存储和对象存储