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

      先来几个题吧:

    var num1 = Number("123blue");
    var num2 = Number("");
    var num3 = Number([]);
    var num4 = Number(true);
    var num5 = Number(null);
    var num6 = Number(undefined);
    var num7 = Number("010");
    答案:
    num1=NaN, num2=0, num3=0, num4=1, num5=0, num6=NaN, num7=10

    var num8 = parseInt("010");
    var num9 = parseFloat("010");
    var num10 = parseInt("123blue");
    var num11 = parseInt("");
    var num12 = parseInt("22.5");
    var num13 = parseFloat("22.0");
    var num14 = parseFloat("0xA");
    答案:
    num8=10(ie8下=8), num9=10, num10=123, num11=NaN, num12=22, num13=22, num14=0
    都答对的亲呢就略过本文吧,其他亲们继续往下看

    js数值转换有4种方法:Number(), parseInt(), parseFloat(), 和一元操作符“+”。其中“+”和Number()的转换规则一样。
    Number()可用于转换任何数据类型,转换的规则如下:

      

     parseInt()和parseFloat()用于转换字符串,Number()转换字符串过于复杂,parseInt()则相对简单,更适用于字符串的转换。parseInt()有以下几点规则:

         1.解析时先查找第一个非空格字符,如果不是数字或+ -,返回NaN,如果是数字,则继续第二个字符,直到解析完所有字符或遇到一个非数字字符。如

       2.会把“0x”开头且后跟数字的当作十六进制解析; “0”开头且后跟数字的,在ECMAScript 3 中当作八进制,ECMAScript5忽略前导0当作十进制解析.(所以上题中的num8在ie8-下等于8,而在其他现代浏览器中是10)

         3.接收第二个参数,指定使用多少进制。如果是指定了十六进制则字符串可以不带前面的“0x”。如parseInt("A", 16)=16,parseInt("A")=NaN.
     
     
     parseFloat()和parseInt( )类似,除了下面两点:

           1.允许有一位小数点“.”,即解析有效的浮点数。

           2.忽略前导0始终按十进制解析,并且十六进制格式的字符串会被转换成0.

       字符串如果包含的是整数或者小数点后是0,parseFloat( )返回整数。


  • 相关阅读:
    快速开始
    阿里为什么选择RocketMQ
    4 分布式消息队列的协调者
    9 首个Apache中间件顶级项目
    3、用适合的方式发送和接收消息
    2 生产环境下的配置和使用
    TOMCAT加载两次war包(重复加载)
    Google Protocol Buffer 的使用(二)
    Google Protocol Buffer 的使用(一)
    PostgreSQL及PostGIS使用
  • 原文地址:https://www.cnblogs.com/pandabunny/p/3517890.html
Copyright © 2011-2022 走看看