`
zccst
  • 浏览: 3320096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

踩过的坑3-parseInt, parseFloat, Number

阅读更多
zccst转载

toFixed 保留2位小数 4舍5入


判断一个数是否是数字?
a === +a

取正(+), 减零 (-0), 乘一,(*1),除以一(/1),取负(-,这个得到相反的值)。
console.log(+'123') //输出 123
console.log(-'123') //输出 -123
console.log('123' - 0) //输出 123
console.log('123'*1) //输出 123
console.log('123'/1) //输出 123

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


①使用parseInt()转换有符号整数

parseInt() 的作用 被描述为 Parses a string argument and returns an integer of the specified radix or base.
parseInt() 的使用方式:var num = parseInt(string[,radix]);

parseInt() 方法首先查看位置 0 处的字符,判断它是否是个有效数字;如果不是,该方法将返回 NaN,不再继续执行其他操作。
但如果该字符是有效数字,该方法将查看位置 1 处的字符,进行同样的测试。这一过程将持续到发现非有效数字的字符为止,
此时 parseInt() 将把该字符之前的字符串转换成数字。

常规用法举例说明:
var num = parseInt("12abc"); //返回 12
  
var num = parseInt("56.9"); //返回 56
var num = parseInt("red"); //返回 NaN
var num = parseInt("red123"); //返回 NaN
parseInt() 方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由 parseInt() 方法的
第二个参数指定的,当然,对二进制、八进制、十六进制甚至十进制(默认模式),都可以调用 parseInt() 方法:
var num = parseInt("10", 2); //将'10'转换成二进制数字返回 2
var num = parseInt("10",; //将'10'转换成八进制数字返回 8
var num = parseInt("10", 10); //将'10'转换成十进制数字返回返回 10
var num = parseInt("F", 16); //将'F'转换成十六进制数字返回 15

parseInt(str)(默认模式)与parseInt(str,10) 都是将字符串转换成十进制的数字。但还是强烈建议使用时加上第二个参数。
因为有如下可能出现:
var num = parseInt("0xF"); // 字符串'0xF'被认为是十六进制数,转换成十进制返回 15。这种情况是正确的。
如果输入字符串数字前面有0,比如'010',结果就不太一样了:
//经测试,在IE9与Chrome最新版,中'010'会被当做十进制数,返回10。但是在FireFox19中返回结果为8!输入'010'被当成了八进制数。
var num = parseInt("010");
所以还是强烈建议加上第二个参数使用。
var num = parseInt("010",; //返回 8
var num = parseInt("010", 10); //返回 10

②使用parseFloat()转换浮点数

parseFloat() 的作用 被描述为 Parses a string argument and returns a floating point number..
parseFloat() 的使用方式:var num = parseFloat(string);

parseFloat() 方法与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,
然后把该字符之前的字符串转换成整数。不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,
第二个小数点将被看作无效的。parseFloat() 会把这个小数点之前的字符转换成数字!并且,与parseInt()不同。
parseFloat() 要求输入的字符串必须以十进制表示浮点数。所以,八进制数'010'会被转换成10,而十六进制数'0xF'会被解析成0
举例如下:
var num = parseFloat("123abc"); //返回 123
var num = parseFloat("0xA"); //返回 0
var num = parseFloat("11.2"); //返回 11.2
var num = parseFloat("11.22.33"); //返回 11.22
var num = parseFloat("0102"); //返回 102
var num = parseFloat("red"); //返回 NaN

③使用Number()强制类型转换为数值型

Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。
parseInt() 和 parseFloat() 方法只转换第一个无效字符之前的字符串,因此 "1.2.3" 将分别被转换为 "1" 和 "1.2"。
用 Number() 进行强制类型转换,"1.2.3" 将返回 NaN,因为整个字符串值不能转换成数字。
如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法。
使用举例及对比:
Number(false) //0
Number(true) //1
Number(undefined) //NaN
Number(null) //0  
 
Number(new object()) //NaN
Number() //0
Number(' ') //0
如果使用parseInt()/parseFloat() 转换上述值,返回结果都是NaN !
Number("1.2.3") //NaN
Number(50) //50
Number("1.2") //1.2
Number("12") //12
看完这段,可以回答刚开始提出的疑问了:传给isNaN的参数是按什么规则转换的? 应该是按照Number()强制转换的规则进行的。


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    转换类型(转换为数字)转换类型Number()、parseInt()、parseFloat的区别

    转换类型(转换为数字)转换类型Number()、parseInt()、parseFloat的区别 在 JavaScript 中,转换类型是指将其他数据类型转换为数字类型的过程。其中,Number()、parseInt()、parseFloat() 是三个常用的转换类型...

    npm-string-to-number-源码.rar

    《深入解析npm-string-to-number-源码》 在前端开发中,我们经常需要将字符串转换为数字,这在处理用户输入、数据解析等场景中尤为常见。npm中的`string-to-number`库为我们提供了便捷的解决方案。本文将深入探讨`...

    array-length-number-conversion.rar_conversion

    此外,JavaScript中的`parseInt()`和`parseFloat()`函数也可以用来转换数组长度,但它们通常用于解析包含数字的字符串,而不是直接用于整数转换。在大多数情况下,`Number()`函数是最佳选择,因为它简洁且适用于这种...

    javascript中的parseInt和parseFloat区别

    3. 如果字符串开头是非数字字符,那么parseInt和parseFloat都会返回NaN。 4. 在对纯数字字符串进行解析时,两者会返回相同的数字。但当字符串中包含小数点或其他非数字字符时,它们的行为会有所不同。 需要注意的是...

    详解JS转换数值函数Number()、parseInt()、parseFloat()

    JS中有三种函数可以将非数值转换成数值:Number()、parseInt()和parseFloat()。接下来通过本文详细的给大家介绍JS转换数值函数Number()、parseInt()、parseFloat()的实例代码,感兴趣的朋友一起看看吧

    20200424 基于JavaScript Number类型 Number() 、 parseInt() 和 parseFloat() 的转换规则.zip

    `Number()`、`parseInt()`和`parseFloat()`是处理字符串转换为数值的关键函数,对于理解和编写JavaScript代码至关重要。本篇文章将详细阐述这三个函数的转换规则。 首先,我们来看`Number()`函数。这个函数可以尝试...

    关于js中字符串转换成数字的问题

    `Number()` 可以用来替代 `parseInt()` 和 `parseFloat()`。它可以接受各种类型的输入,并尝试将其转换为数字。例如: - `Number(false); // 0` - `Number(true); // 1` - `Number(undefined); // NaN` - `Number...

    Java学习教程-java中number类浅析.docx

    ### Java学习教程:Java中Number类浅析 #### 一、概述 在Java语言中,`Number`类作为所有基本数值类型的包装类的基础类,它提供了一系列用于处理数值的方法。这些包装类包括`Integer`、`Long`、`Byte`、`Double`、...

    parseInt parseFloat js字符串转换数字

    parseInt parseFloat JS 字符串转换数字 在 JavaScript 中,字符串转换数字是一种常见的操作,主要有三种方法:转换函数、强制类型转换、利用 JS 变量弱类型转换。 1. 转换函数 JavaScript 提供了两个转换函数:...

    JavaScript程序设计-JavaScript中的Number对象.pdf

    - `Number.parseFloat()` 和 `Number.parseInt()` 分别用于将字符串转换为浮点数和整数,与全局同名函数作用相同。 - `Number.isFinite()` 检查Number对象是否为有限的数值,即不是Infinity或-Infinity。 - `...

    深入理解JS中Number(),parseInt(),parseFloat()三者比较

    在JavaScript中,转换数值的方法主要有`Number()`、`parseInt()`和`parseFloat()`,它们各自有特定的转换规则和应用场景。 1. **Number()** `Number()`函数可以将各种类型的数据转换为数值。以下是它的转换规则: ...

    详解js中Number()、parseInt()和parseFloat()的区别

    在JavaScript编程中,类型转换是一个常见而重要的话题,其中涉及到数字类型转换的方法有三个:`Number()`, `parseInt()`, 和 `parseFloat()`。这三个方法虽然都用于将值转换成数字类型,但它们在转换细节和用途上...

    check number js

    - `parseFloat(variable)` 或 `parseInt(variable, radix)` 这两个函数用于解析字符串并返回数字。如果整个字符串不能被解析为数字,它们会返回到第一个无法识别的字符。 在实际应用中,我们可能还需要考虑以下...

    JS——Number

    - 科学计数法:如`1.23e3`(1230)或`1.23e-3`(0.001)。 3. 特殊数值 - `NaN`:非数字(Not-a-Number),用于表示无法表示的数值结果。 - `Infinity`:正无穷大。 - `-Infinity`:负无穷大。 - `Number.MAX_...

    javascript 数据类型转换(parseInt,parseFloat)

    本文将详细讲解两种数据类型转换的方法,以及`parseInt`和`parseFloat`这两个常用转换函数的用法。 首先,我们来了解基本数据类型转换。这涉及到将值从一种数据类型转换为另一种数据类型。JavaScript提供了以下三种...

    week1.2数据类型转换.md

    **Number() 与 parseInt()、parseFloat() 的区别** - `parseInt()` 和 `parseFloat()` 仅解析字符串中的数字部分。 - `Number()` 支持更多类型的转换,例如它可以将布尔值转换为数字。 - `parseInt()` 不支持小数点...

    前端面试题之baseJS-number.zip

    JavaScript提供了多种将其他类型转换为Number的方法,如`Number()`函数、`parseInt()`和`parseFloat()`。注意,这些方法在处理非数字字符串时的行为差异,比如`parseInt()`会忽略字符串前缀的空格和非数字字符,而`...

    js parsefloat parseint 转换函数

    JavaScript语言提供了多种类型转换方法,其中包括eval()、parseInt()和parseFloat()三个主要的显式类型转换函数。这三个函数可以将不同类型的数据转换为数字类型,它们在处理字符串和数字之间的转换时,各有不同的...

Global site tag (gtag.js) - Google Analytics