数据类型-02数字类型
科学计数法:
附加 "e" 来省略 0,e 后面的数字就是零的个数。就像:123e6 是 123 后面接 6 个零。
"e" 后面的负数将导致数字除以 1 后面接着给定数量的零。e-6 那是一百万分之一。对于不同的进制:
可以在十六进制(0x),八进制(0o)和二进制(0b)系统中直接写入数字。
parseInt(str,base) 解析来自任何数字系统的整数,其基数为:2≤base≤36。
num.toString(base) 将数字转换为数字系统中具有给定 base 的字符串。
Tips:123456..toString(36) 中的两个点不是拼写错误。如果我们想直接在一个数字上调用一个方法,比如上面例子中的
toString,那么我们需要在它后面放置两个点 ..。如果我们放置一个点:123456.toString(36),那么会出现错误,因为
JavaScript 语法暗示了第一个点之后的小数部分。如果我们再放一个点,那么 JavaScript
知道小数部分是空的,现在进入方法。=也可以将对num使用括号
Math对象方法:
Math.floor 向下取整
Math.ceil 向上取整
Math.round 四舍五入 取整
Tips:Math.toFixed(n) 四舍五入到小数点后第n个数字,返回结果为字符串。要注意如果是小数的话有可能造成的精度缺失。
Math.trunc (IE不兼容) 截取整数部分
Math.random() [0,1)的随机数
Math.max(a, b, c...) / Math.min(a, b, c…) 最大值最小值
Math.power(n, power) 幂函数
带单位的数字提取:
使用加号 + 或 Number() 的数字转换是严格的。如果一个值不完全是一个数字,就会失败。
唯一的例外是字符串开头或结尾的空格,因为它们会被忽略。而函数parseInt()/parseFloat()可以,它从字符串中读取一个数字,然后返回错误发生前可以读取的值。如果发生错误,则返回收集的数字。函数
parseInt 返回一个整数,而 parseFloat 将返回一个浮点数。
有时候 parseInt / parseFloat 会返回 NaN。一般发生在没有数字可读的情况下。
parseInt() 函数有一个可选的第二个参数。它指定了数字系统的基础,因此 parseInt
还可以解析十六进制数字,二进制数字等字符串:alert( parseInt('0xff', 16) ); // 255
非精确计算:
之前有说过,基本数据类型存储在栈中,而给其分配的内存空间是有大小限制的,如果一个数字太大,超过编译器指定的空间的话,会造成溢出(stack
overflow),输出无穷大 Infinity。
浮点型数字造成的精度缺失,计算的时候考虑使用四舍五入toFixed或者转化成整数计算。
isNaN/isFinite:
isNaN(value) 将参数转化成数字,然后测试它是否为NaN。
isFinite(value) 将其参数转换为数字,如果是常规数字,则返回 true,而不是 NaN / Infinity / -Infinity。
所有数字函数(包括 isFinite)中的空字符串或空格字符串均被视为 0。
Tips:
1.NaN是独一无二的,它不等于任何东西,包括它本身。
2.有一种特殊的内置方法 Object.is,它可以比较 === 等值,但对于两种边缘情况更可靠:它适用于 NaN:
Object.is(NaN,NaN)=== true,这是件好事。值 0 和 -0 是不同的:Object.is(0,-0)===
false,它不是很重要,但这些值在技术上是不同的。在所有其他情况下,Object.is(a,b) 与 a === b 相同。这种比较方式经常用于
JavaScript 规范。当内部算法需要比较两个值完全相同时,它使用 Object.is(内部称为 SameValue)。