js标准内置对象Number、parseFloat、parseInt记录


参考链接: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number

Number

描述

Number 构造函数包含常量和处理数值的方法。其他类型的值可以使用 Number() 函数转换为数字。
当作为一个函数使用时,Number(value) 将字符串或者其他值转换到 Number 类型。如果该值不能被转换,它会返回 NaN。

Number("123"); // 返回数字 123
Number("123") === 123; // true

Number("unicorn"); // NaN
Number(undefined); // NaN

强制转换

Number.parseFloat() 和 Number.parseInt() 与 Number() 相似,但只能转换字符串,并且解析规则略有不同。例如,parseInt() 无法识别小数点,parseFloat() 无法识别 0x 前缀

  1. Number 将按原样返回
  2. undefined 转换为 NaN。
  3. null 转换为 0。
  4. true 转换为 1;false 转换为 0。
  5. 字符串将被假定为包含数字字面量,并通过解析它们来转换。解析失败会得到 NaN。与实际数字字面量相比,它们有一些细微的差别:
  • 前导和尾随的空格/换行符会被忽略。
  • 前导的数字 0 不会导致该数值成为八进制字面量(或在严格模式下被拒绝)。
  • +和 - 允许出现在字符串的开头以指示其符号。(在实际代码中,它们“看起来像”文字的一部分,但实际上是独立的一元运算符。)然而,该标志只能出现一次,并且后面不能跟空格。
  • Infinity 和 -Infinity 被当作是字面量。在实际代码中,它们是全局变量。
  • 空字符串或仅包含空格的字符串转换为 0。
  • 不允许使用数字分隔符。
  1. BigInt 抛出 TypeError,以防止意外的强制隐式转换导致精度损失。
  2. Symbol 抛出 TypeError。
  3. 对象首先通过按顺序调用它们的 @@toPrimitive(使用 “number” 提示)、valueOf() 和 toString() 方法将其转换为原始值。然后将得到的原始值转换为数字。

静态方法

  1. Number.isFinite():判断传入的值是否是有限数
  2. Number.isInteger(): 判断传入的值是否为整数
  3. Number.isSafeInteger():判断传入的值是否为安全整数(数值在 -(253 - 1) 到 253 - 1 之间)。
  4. Number.isNaN():判断传入的值是否为 NaN。
  5. Number.parseFloat()和全局函数 parseFloat() 相同
    Number.parseFloat() 静态方法解析参数并返回浮点数。如果无法从参数中解析出一个数字,则返回 NaN
  6. Number.parseInt()和全局函数 parseInt() 相同

parseFloat

parseFloat() 函数解析一个参数(必要时先转换为字符串)并返回一个浮点数,其是全局函数,不属于任何对象。

  1. 如果 parseFloat 在解析过程中遇到了正号(+)、负号(- U+002D HYPHEN-MINUS)、数字(0-9)、小数点(.)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。
  2. 第二个小数点的出现也会使解析停止(在这之前的字符都会被解析)。
  3. 参数首位和末位的空白符会被忽略。
  4. 如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。
  5. parseFloat 也可以解析并返回 Infinity。
  6. parseFloat 解析 BigInt 为 Numbers, 丢失精度。因为末位 n 字符被丢弃。
    考虑使用 Number(value) 进行更严谨的解析,只要参数带有无效字符就会被转换为 NaN 。
    parseFloat 也可以转换一个已经定义了 toString 或者 valueOf 方法的对象,它返回的值和在调用该方法的结果上调用 parseFloat 值相同。
下面的例子都返回3.14parseFloat(3.14);
parseFloat("3.14");
parseFloat("  3.14  ");
parseFloat("314e-2");
parseFloat("0.0314E+2");
parseFloat("3.14some non-digit characters");
parseFloat({
  toString: function () {
    return "3.14";
  },
});
返回NaN
parseFloat("FF2");

parseInt

parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。
parseInt函数将其第一个参数转换为一个字符串,对该字符串进行解析,然后返回一个整数或 NaN。 如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。parseInt 将数字截断为整数值。允许前导和尾随空格

  1. parseInt 可以理解两个符号。+ 表示正数,- 表示负数(从 ECMAScript 1 开始)。它是在去掉空格后作为解析的初始步骤进行的。如果没有找到符号,算法将进入下一步;否则,它将删除符号,并对字符串的其余部分进行数字解析。
  2. 如果 radix 是 undefined、0 或未指定的,JavaScript 会假定以下情况:
  • 如果输入的 string 以 0x 或 0X(一个 0,后面是小写或大写的 X)开头,那么 radix 被假定为 16,字符串的其余部分被当做十六进制数去解析。
  • 如果输入的 string 以 “0”(0)开头,radix 被假定为 8(八进制)或 10(十进制)。具体选择哪一个 radix 取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
  • 如果输入的 string 以任何其他值开头,radix 是 10 (十进制)。
  1. 如果第一个字符不能转换为数字,parseInt 会返回 NaN
以下例子均返回15parseInt("0xF", 16);
parseInt("F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10); // parseInt(015, 8); 返回 13
parseInt(15.99, 10);
parseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15 * 3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);

函数返回值备注
Number将字符串或者其他值转换到 Number 类型。如果该值不能被转换,它会返回 NaNundefined 转换为 NaN。null 转换为 0。true 转换为 1;false 转换为 0;空字符串或仅包含空格的字符串转换为 0
例:Number(‘3.14’) === Number(3.14) // true
Number(3.14.12) // 报错
Number(‘3.14.12’) // NaN
parseFloat(string)给定值被解析成浮点数。如果给定值不能被转换成数值,则会返回 NaN第二个小数点的出现也会使解析停止(在这之前的字符都会被解析)
例:parseFloat(‘3.14.14’) // 3.14
parseFloat(’ 3.1 4’) (3和4前边有空格) // 3.1
parseInt(string, radix)返回一个整数或 NaN如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。parseInt 将数字截断为整数值。允许前导和尾随空格。
例:parseInt(15.99, 10) // 15
parseInt(“15,123”, 10); // 15
parseInt(" -15", 10);(负号前边有空格) // -15
  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao_cheng_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值