javascript 函数 parseInf 的作用 及 科学计数法 特殊案例

一、parseInfo 的 作用

        parseInt()函数可以将字符串转换成一个整数;

        直接说明:

        1、当(被执行的参数(字符串),以下统称为'参数') 参数首位字符不是数字字符或者负号,parseInt()就会返回NaN

        2、如果第一个字符是负号或者数字字符,函数parseInt()会继续解析第二个字符,直到解析完后续字符或者遇到非数字字符结束

        3、如果字符串以 ' 0x ' 开头,那parseInt() 将会将其当作一个16进制整数

        4、如果字符串以”0”开头且后跟数字字符,就会将其当作一个八进制整数。

        5、parseInt()函数增加了第二参数用于指定转换时使用的基数(即多少进制)。

        6、当parseInt()函数所解析的是浮点数字符串时,取整操作所使用的方法为“向下取整”。

二、案例分析

consle.log(parseInt('a12456'));   //NaN
consle.log(parseInt('1a2b3c'));   //1
consle.log(parseInt('0.001'));   //0
consle.log(parseInt('0.0000001'));   //0
consle.log(parseInt(0.0000001));   //1
consle.log(parseInt(0.2222221));   //4886718345
consle.log(parseInt(0x123));   // 83
console.log(parseInt(10000000)); //10000000
console.log(parseInt(10000000000000000000000000000)); //1
console.log(parseInt(NaN));    //NaN
console.log(parseInt(null));    //NaN
console.log(parseInt(undefined));    //NaN

根据parseInfo 的 作用,很多例子我们都理解,不多解释,下面拿出特殊案例做下分析

console.log(parseInt(0.0000001))  // 1

按上面作用,这里不应该是 0 吗? 为什么会打印 1,这里使用到了另一个知识点 学记数法

科学记数法

科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。 

例如 1980000 = 1.98x10^6 = 1.98e+6 (计算器或电脑表达10的幂是一般是用E或e)

在 ECMAScript 规范中 Number.prototype.toString 方法和 Number.prototype.toPrecision 方法中都有提到当 Number 被转化为 String 时,满足以下条件将会被处理为科学记数法

  • 当一个 数字number 被转为为科学记数法后,number = a*E^n 满足 n <= -6 或者 21 < n 时,会将结果转换为科学记数法的字符串表达式

console.log(String(1000000000000000000000)); // 1e+21
console.log(1*Math.pow(10, 21));
console.log(String(1980000000000000000000)); // 1.98e+21
console.log(String(19800000));    // 19800000
console.log(String(1.0000001));    //1.0000001 (a 为 分数)
console.log(String(0.0000001));    // 1e-7
console.log(1.98e+6); //1980000

1000000000000000000000 = 1*Math.pow(10, 21) = 1e+21

0.0000001 = 1*Math.pow(10, -7) = 1e-7

在使用parseInt() 方法时,参数首先会转换成字符串,案例中 0.0000001 和 100000000000000000000 满足 n <= -6 n > 21 ,所以被处理成为科学计数法,那么

// parseInt(0.0000001) 等同于  parseInt(String(0.0000001))

console.log(parseInt(0.0000001)) //1 
console.log(String(0.0000001));    //1e-7
console.log(parseInt('1e-7')); // 1

又补充的请于评论区一起讨论学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值