• js数值转换的三种方法


    js非数值转换为数值的三种写法分别为Number()、parseInt()、parseFloat()。

    Number()是最复杂的。规则如下:

    1.数值直接输出;

    console.log(Number('11'));//输出11;

    2.Boolean值,true转换成1,false转换成0;

    console.log(Number(true));//输出1;
    console.log(Number(false));//输出0;

    3.null转换成0,undefined转换成NaN

    console.log(Number(null));//输出0;
    console.log(Number(undefined));//输出NaN;

    4.字符串转换又有很多规则:

    (1)字符串只包含数字,会转换成十进制,忽略前面的0,例如

    console.log(Number('011'));//输出11;

    (2)字符串包含有效的浮点格式,会转换成小数,同样忽略前面的0,例如

    console.log(Number('000.11'));//输出0.11;

    (3)字符串包含有效的十六进制格式,会转换成大小相等的十进制格式数值输出

    console.log(Number('0xa'));//输出10;

    (4)字符串为空,不包含任何字符,转换为0

    console.log(Number(''));//输出0;

    (5)除以上字符串外的字符串,转换为NaN

    console.log(Number('Hello!'));//输出NaN;

    Number()的转换规则确实有些复杂了。并且在某些情况下可能并不是我们想要的结果。通常我们用parseInt()来进行数值的转换。

    parseInt()不会转换非数值模式的格式。它会忽略字符串前面的空格,直到找到一个非空格字符:

    1.如果这个字符不是数字符号或者负号,则返回NaN

    console.log(parseInt('   Hello!'));//输出NaN;

    空字符串返回NaN,这一点跟Number()不同。

    console.log(parseInt(' '));//输出NaN;

    如果是数字符号或者负号,会继续解析第二个,直到解析完所有或者遇到非数字符号字符

    console.log(parseInt('123hehe'));//输出123;

    非字符后面的数字也会被忽略

    console.log(parseInt('123hehe123'));//输出123;

    小数点是非数字符号字符,会导致解析中止。

    console.log(parseInt('12.3'));//输出12

    如果第一个非空格字符是数字,parseInt()可以解析各种整数格式,包括八进制,十进制,十六进制

    console.log(parseInt('070'));//es3输出56(八进制),es5输出70(十进制);
    console.log(parseInt('70'));//70(十进制);
    console.log(parseInt('0xa'));//10(十六进制);

    可见es3和es5在解析八进制存在差异,es5已经不具备解析八进制的能力。因此我们有必要使用parseInt()的第二个参数

    console.log(parseInt('070',8));//输出56;
    console.log(parseInt('070',10));//输出70;
    console.log(parseInt('70',8));//输出56;
    console.log(parseInt('70',10));//输出70;
    console.log(parseInt('0xa',16));//输出10;

    如果指定16作为第二个参数,前面的0x就可以省略了,如果没指定则不能省略,否则返回NaN

    console.log(parseInt('a',16));//输出10;
    console.log(parseInt('a'));//输出NaN;

    建议使用parseInt()任何时候都加上转换基数。

    parseInt()不能转换浮点型数值,我们用parseFloat()来解决。

    parseFloat()跟parseInt()差不多,同样会从第一个非空字符串开始解析,直到解析完毕,或者遇到非浮点型数值格式(区别一),但是它会忽略前面所有的0,他没有转换基数,只解析十进制的值(区别二)

    console.log(parseFloat(' 123hehe'));//输出123;
    console.log(parseFloat('123hehe'));//输出123;
    console.log(parseFloat('01.2.3'));//输出1.2;
    console.log(parseFloat('0xa'));//输出0

    注意,如果字符串可以解析为整数,则小数点后面的0不会输出

    console.log(parseFloat('1.000'));//输出1;
  • 相关阅读:
    在子Repeater调用父Repeater里的数据
    使用事务范围实现隐式事务
    关于TransactionScope分布式事务在Oracle下的运作
    C#枚举类型的使用示例
    ORACLE分区表发挥性能
    oracle 批处理 执行 sql
    连接查询_左连接/右连接/全连接的区别
    转: C#的25个基础概念
    bat文件编写
    Nginx 远程安全漏洞
  • 原文地址:https://www.cnblogs.com/pixelk/p/6978266.html
Copyright © 2020-2023  润新知