022_JavaScript数字
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数字相关推荐
- 力扣解题——求根到叶子节点数字之和
难度:中等 题目:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 123. 计算从根到 ...
- C++ 笔记(35)— std::to_string 转换整形数字为字符串
1. 函数原型 string to_string (int val); string to_string (long val); string to_string (long long val); s ...
- pandas dataframe 字符映射为数字
在机器学习中对于有序的类别型变量可以不采用onehot编码,直接使用有序数字代替即可,这个目的可以在pandas中使用map方法实现. import pandas as pd 创建数据框 raw_da ...
- 用0到9十个数字,每个数字使用一次,构成两个五位数a和b,并且a+20295=b.求a,b
方法1: 这是一开始想到的方法,代码稍微有点长. 首先,确定a数的范围,然后,取出a数其他位数上的数,存入列表中,a数各位上的数进行比较,然后根据a求出b的值,然后对b进行筛选,选出符合要求的b值.具 ...
- LeetCode简单题之有多少小于当前数字的数字
题目 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i ...
- LeetCode中等题之重排数字的最小值
题目 给你一个整数 num .重排 num 中的各位数字,使其值 最小化 且不含 任何 前导零. 返回不含前导零且值最小的重排数字. 注意,重排各位数字后,num 的符号不会改变. 示例 1: 输入: ...
- LeetCode简单题之字符串转化后的各位数字之和
题目 给你一个由小写字母组成的字符串 s ,以及一个整数 k . 首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,'a' 用 1 替换,'b' 用 2 替换,- 'z' 用 ...
- LeetCode简单题之K 进制表示下的各位数字总和
题目 给你一个整数 n(10 进制)和一个基数 k ,请你将 n 从 10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的 总和 . 转换后,各位数字应当视作是 10 进制数字,且它们的总和 ...
- LeetCode简单题之检查句子中的数字是否递增
题目 句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格.每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文 ...
最新文章
- 选择之后触_如果有朋友在做选择时左右为难,我应该该给出什么样的建议
- SSH,telnet终端中文显示乱码解决办法
- 单片机c语言程序设计叶俊明,单片机C语言程序设计
- 雷赛运动控制卡能不能用c语言_基于PMAC控制卡的三坐标测量机控制系统
- python 描述性分析_描述性分析-1对被解释变量进行描述
- mysql 内存性能优化
- C语言必背100代码,C语言必会100代码大全
- MacOS iNode客户端连接SSL
- 笔记本开机密码忘记了怎么解决,消除笔记本密码
- go 语言最详细的入门教程
- 分享受用一生的高效 PyCharm 使用技巧。
- 个人博客/博客管理系统/Siteserver cms
- 基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程
- 读硕士和读博士有什么区别?
- 又到年末“团建”!某企业员工吐槽:这真是一场噩梦……
- android8 Camera2 从 CameraService 到 HAL Service
- 基于 Kintex UltraScale 系列 FPGA 的高性能 VPX 数据预处理载板(4 路 SRIO X4、 XCKU115-2FFVA1517I)
- php同步到百度云,linux 备份定时同步到百度云盘
- C++实验3— 个人所得税计算器
- 校园超市购物小程序 计算机毕业设计