javascript数据类型----Number

1.浮点数值

浮点数值的坑大多集中在计算方面,例如 0.1 + 0.2 的结果不是 0.3 ,而是 0.30000000000000004 ,造成这样结果的原因有兴趣的可以去查看一下“位运算”的相关内容。

因此,永远不要测试每个特定的浮点数值,如果需要验证可以通过保留小数点后几位有效数字的方法进行比较。

toDecimal(x){
                let f = parseFloat(x);
                if(isNaN(f)){
                    return false;
                }
                f = Math.round(x * 100) / 100;
                return f;
 }

对于那些极大或极小的数值,可以用 e 表示法(即科学计数法)表示的浮点数值表示。在默认情况下,ECMAScript会将那些小数点后面带有 6 个领以上的额浮点数值转换为以 e 表示法表示的数值。

2.与数值相关的全局方法

(1)parseInt 方法将用于把字符串转换为整数。

字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。

如:

parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15

如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN

parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1

对于那些会自动转为科学计数法的数字,parseInt会将科学计数法的表示方法视为字符串,因此导致一些奇怪的结果。

parseInt(1000000000000000000000.5) // 1
// 等同于
parseInt('1e+21') // 1

parseInt(0.0000008) // 8
// 等同于
parseInt('8e-7') // 8

(2)进制转换

parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制,返回该值对应的十进制数。默认情况下,parseInt的第二个参数为10,即默认是十进制转十进制。

parseInt('1000') // 1000
// 等同于
parseInt('1000', 10) // 1000

(3)parseFloat() 方法用于将一个字符串转为浮点数。

(4)isNaN方法可以用来判断一个值是否为NaN

(5)isFinite方法返回一个布尔值,表示某个值是否为正常的数值。

3.Number 数值转换

Number ()函数的转换规则如下

如果是 Boolean 值,true 和 false 将分别被转换 1 和 0 。

如果是数字值,只是简单的传入和返回。

如果是 null 值, 返回 0 。

如果是 undefined ,返回 NaN 。

如果是字符串,遵循下列规则

如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即“ 1 ”会变成 1,“123” 会变成               123 。而“011”会变成11

如果字符串中包含有限的浮点格式,如“1.1”,则将其转换为对应的浮点数值(同样,也会忽略前导零)

如果字符串中包含有效的十六进制格式,例如“0xf”,则将其转换为相同大小的十进制整数值;

如果字符串是空的(不包含任何字符),则将其转换为 0;

如果字符串中包含除上述格式之外的字符,则将其转换为 NaN 。


如果是对象,则调用对象的 valueOf ()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN ,则调用对象的toString () 方法,然后再次依照前面的规则转换返回的字符串值。

猜你喜欢

转载自blog.csdn.net/djz917/article/details/81629904