首页 > JavaScript > 如何在 JavaScript 中将字符串转换为整数?

如何在 JavaScript 中将字符串转换为整数?

上一篇 下一篇

如何在 JavaScript 中将字符串转换为整数?

分割线

网友回答:

尝试解析函数:

var number = parseInt("10");

但是有一个问题。如果您尝试使用 parseInt 函数转换“010”,它会检测为八进制数,并将返回数字 8。因此,您需要指定一个基数(从 2 到 36)。在本例中,基数为 10。

parseInt(string, radix)

例:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false

请注意,在解析任何有效数据后会忽略错误数据。
此 guid 将解析为 51:
parseInt

var result = parseInt('51e3daf6-b521-446a-9f5b-a1bb4d8bac36', 10) == 51; // Returns true

分割线

网友回答:

最简单的方法是使用本机函数:Number

var x = Number("1000")

如果这对你不起作用,那么有parseIntunary plusparseFloat with floorMath.round方法。

parseInt()

var x = parseInt("1000", 10); // You want to use radix 10
    // So you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and older][1])

一元加

如果您的字符串已经采用整数形式:

var x = +"1000";

地板()

如果您的字符串是或可能是浮点数,并且您想要一个整数:

var x = Math.floor("1000.01"); // floor() automatically converts string to number

或者,如果你打算多次使用Math.floor:

var floor = Math.floor;
var x = floor("1000.01");

parseFloat()

如果你是那种在调用parseInt时忘记输入基数的类型,你可以使用parseFloat并按照你喜欢的方式对其进行舍入。这里我使用地板。

var floor = Math.floor;
var x = floor(parseFloat("1000.01"));

圆形()

有趣的是,Math.round(如Math.floor)将进行字符串到数字的转换,所以如果你想让数字四舍五入(或者如果你的字符串中有一个整数),这是一个很好的方法,也许是我最喜欢的:

var round = Math.round;
var x = round("1000"); // Equivalent to round("1000", 0)

分割线

网友回答:

在 JavaScript 中,有两种主要方法可以将字符串转换为数字。一种方法是解析它,另一种方法是将其类型更改为数字。其他答案中的所有技巧(例如,一元加号)都涉及隐式将字符串的类型强制为数字。您也可以使用 Number 函数显式执行相同的操作。

解析

var parsed = parseInt("97", 10);

parseInt 和 parseFloat 是用于将字符串解析为数字的两个函数。如果解析命中它无法识别的字符,解析将静默停止,这对于解析像“92px”这样的字符串很有用,但它也有些危险,因为它不会给你任何类型的错误输入错误输入,相反,你会得到 NaN,除非字符串以数字开头。字符串开头的空格将被忽略。下面是一个示例,它执行与您想要的操作不同的事情,并且没有指示出现任何问题:

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97

最好始终将基数指定为第二个参数。在较旧的浏览器中,如果字符串以 0 开头,如果未指定基数,它将被解释为八进制,这让很多人感到惊讶。十六进制的行为是通过在未指定基数的情况下让字符串以 0x 开头来触发的,例如 .该标准实际上在 ECMAScript 5 中发生了变化,因此如果没有指定基数,现代浏览器不再在前导 0 时触发八进制。parseInt 可以理解基数高达 36 的基数,在这种情况下,大写和小写字母都被视为等效字母。0xff

将字符串的类型更改为数字

上面提到的不使用 parseInt 的所有其他技巧都涉及将字符串隐式强制转换为数字。我更喜欢明确地这样做,

var cast = Number("97");

这与解析方法具有不同的行为(尽管它仍然忽略空格)。它更严格:如果它不理解整个字符串而不是返回,所以你不能将其用于像.由于您需要一个基元数字而不是 Number 包装器对象,因此请确保不要放在 Number 函数前面。NaN97pxnew

显然,转换为数字会给你一个值,该值可能是浮点数而不是整数,所以如果你想要一个整数,你需要修改它。有几种方法可以做到这一点:

var rounded = Math.floor(Number("97.654"));  // other options are Math.ceil, Math.round
var fixed = Number("97.654").toFixed(0); // rounded rather than truncated
var bitwised = Number("97.654")|0;  // do not use for large numbers

任何按位运算符(这里我已经做了一个按位或,但你也可以像前面的答案或位移一样做双重否定)都会将值转换为 32 位整数,其中大多数将转换为有符号整数。请注意,对于大整数,这不会想要您想要。如果整数不能用 32 位表示,它将换行。

~~"3000000000.654" === -1294967296
// This is the same as
Number("3000000000.654")|0
"3000000000.654" >>> 0 === 3000000000 // unsigned right shift gives you an extra bit
"300000000000.654" >>> 0 === 3647256576 // but still fails with larger numbers

若要正确处理较大的数字,应使用舍入方法

Math.floor("3000000000.654") === 3000000000
// This is the same as
Math.floor(Number("3000000000.654"))

请记住,强制理解指数符号和无穷大,所以不是 NaN,而解析方法则不然。2e2200

习惯

这两种方法都不太可能完全按照您的要求。例如,通常我希望在解析失败时抛出错误,并且我不需要对无穷大、指数或前导空格的支持。根据您的用例,有时编写自定义转换函数是有意义的。

始终检查 Number 或其中一个解析方法的输出是否是预期的数字类型。您几乎肯定会想要确保该数字不是 NaN(通常是您发现解析失败的唯一方法)。isNaN

模板简介:该模板名称为【如何在 JavaScript 中将字符串转换为整数?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 234次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-18
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
响应式 微信文章 单页式简历模板 html5 微信图片 自适应 企业网站 微信公众平台 微信素材 微信模板
您可能会喜欢的其他模板