JavaScript中将浮点数转换为整数的最佳方法是什么?

32
JavaScript有几种不同的方法可用于将浮点数转换为整数。我的问题是哪种方法能够提供最佳性能、最兼容或被认为是最佳实践?以下是我所知道的一些方法:

有几种不同的方法可用于在JavaScript中将浮点数转换为整数。我的问题是哪种方法能够提供最佳性能、最兼容或被认为是最佳实践?以下是我所知道的一些方法:

var a = 2.5;
window.parseInt(a); // 2
Math.floor(a);      // 2
a | 0;              // 2

我相信还有其他选择。有什么建议吗?


对于建议使用 <code>parseInt</code> 的所有人:请仔细再次阅读原始帖子。 <code>a</code> 是一个数字变量,而不是字符串。 - Thomas
12个回答

-1

你也可以这样做:

var string = '1';
var integer = a * 1;

首先,您有一个拼写错误(“a”应该是“string”),其次,这只是将字符串转换为数字,而不是整数。尝试将字符串更改为'1.1'。 - Jason S

-4

parseInt() 可能是最好的选择。a | 0 并不会做你真正想要的事情(它只会在 a 是未定义或空值时分配 0,这意味着一个空对象或数组可以通过测试),而 Math.floor 通过一些类型技巧来工作(它基本上在后台调用 parseInt())。


你确定你不是想用 || 0 吗?据我所知,单个 | 是按位或运算符,而不是布尔或运算符。我不确定为什么它能工作,但在 Firebug 中尝试一下吧。 - Mathew Byrne
是的,这是位运算。 - Jason Bunting
1
另外,你从哪里获取有关Math.floor如何工作的信息? - Jason Bunting
你是对的,a||0 是逻辑或。这意味着 a|0 的工作方式与 Math.floor 完全相同。我关于 Math.floor 的信息来自于挖掘 SpiderMonkey 内部以进行各种个人项目。 - Jeff Hubbard
1
哦,好的 - 所以对于那个实现,这就是 Math.floor 的工作方式,不一定适用于每个实现。 - Jason Bunting

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接