zoukankan      html  css  js  c++  java
  • 数值转换

    Javascript中有3个函数可以把非数值转换为数值:Number() 、parseInt() 、ParseFloat()。

    其中,Number() 可以用于任何数据类型,parseInt() 、ParseFloat()则专门用于把字符串转换为数值。这三个函数对于同样的输入会有返回不同的结果。

    Number() 函数转换规则

    1、如果是数字值,只是简单的传入和返回,即返回数字本身;

    2、如果是Boolean值,true和false将分别被转换为1和0;

    3、如果是null值,返回0;

    4、如果是undefined,返回NaN;

    5、如果是字符串,则

      (1)如果字符串中只包含数字(包括前面带正负号的情况),则将其转换为十进制数值;(前导的零会被忽略)

      (2)如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值;(前导的零会被忽略)

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

      (4)如果字符串是空的,则将其转换为0;

      (5)如果字符串中包含除上述格式以外的字符,则将其转换为NaN.

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

    ps:一元加操作符的操作与Number()函数相同。

    parseInt() 函数转换规则

    1、如果是整数值,只是简单的传入和返回,即返回数字本身;

    2、如果是浮点数,只保留整数部分(向下取整);

    3、如果是Boolean值,true和false将被转换为NaN;

    4、如果是null值,返回NaN;(不同于Number()方法

    5、如果是undefined,返回NaN;

    6、如果是字符串,若字符串第一个非空字符前面含有空格,则忽略空格,直接从第一个非空字符开始解析。如果第一个非空字符不是数字或者负号,则返回NaN;如果第一个非空字符是数字,则继续解析直至解析完毕或者遇到一个非数字符号为止。   例如 “   1234blue”会被转换为1234

    parseFloat() 函数转换规则

    ParseFloat()的转换规格和parseInt() 基本类似,也是从第一个非空字符开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇到一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。 例如 “  22.34.5”会被转换为22.34

    ParseFloat()和parseInt() 还有一个重要的区别在于ParseFloat()始终都会忽略前导的零,意思就是ParseFloat()可以识别几乎所有的浮点数值格式,也包括十进制整数格式,但十六进制格式的字符串则始终会被转换为0.    例如 “0xA” 会被转换为0

    最后还应注意的是:如果字符串包含的是一个可解析为整数的书(没有小数点,或者小数点后都是零),ParseFloat()会返回整数。

    parseInt()传入参数

    可以为parseInt()函数传入第二个参数:转换时使用的基数(即多少进制)。

    var num = parseInt("0xAF", 16);       //175
    var num1 = parseInt("AF", 16);        //175
    var num2 = parseInt("AF");            //NaN

    指定基数会影响到转换的输出结果。

    var num1 = parseInt("10", 2);         //2 – parsed as binary
    var num2 = parseInt("10", 8);         //8 – parsed as octal
    var num3 = parseInt("10", 10);        //10 – parsed as decimal
    var num4 = parseInt("10", 16);        //16 – parsed as hexadecimal

    不指定基数意味着让parseInt()决定如何解析输入的字符串,因此为了避免错误的解析,建议无论在上面情况下都明确指定基数。

    参考:《Js高级程序设计》第三版P30-32

  • 相关阅读:
    全选和选项交互
    无法将类型为excel.applicationclass的com 强制转换为接口类型的解决方法[转]
    SilverLight搭建WCF聊天室详细过程[转]
    进程与线程的一个简单解释
    Visiual Studio CLR20r3
    C#注册表操作类--完整优化版
    cmd注册外部命令
    C# Dsofile.dll无法注册运行问题解决
    .net版,微信免充值代金卷业务开通验收代码
    C#十进制与任意进制的转换
  • 原文地址:https://www.cnblogs.com/guorange/p/6639958.html
Copyright © 2011-2022 走看看