在JavaScript中有几种不同的方法可以将浮点数转换为整数.我的问题是什么方法能提供最佳性能,最兼容,或被认为是最佳实践?
以下是我所知道的一些方法:
var a = 2.5; window.parseInt(a); // 2 Math.floor(a); // 2 a | 0; // 2
我相信那里还有其他人.建议?
根据这个网站:
parseInt偶尔用作将浮点数转换为整数的方法.它非常适合该任务,因为如果它的参数是数字类型,它将首先转换为字符串,然后解析为数字...
对于将数字四舍五入为整数,Math.round,Math.ceil和Math.floor之一更可取...
来自Douglas Crockford的"Javascript:The Good Parts":
Number.prototype.integer = function () { return Math[this < 0 ? 'ceil' : 'floor'](this); }
这样做是为每个Number对象添加一个方法.
然后你就可以这样使用它:
var x = 1.2, y = -1.2; x.integer(); // 1 y.integer(); // -1 (-10 / 3).integer(); // -3
显然双按位 - 不是最快的方法来放置一个数字:
var x = 2.5; console.log(~~x); // 2
曾经是这里的一篇文章,现在获得404:http://james.padolsey.com/javascript/double-bitwise-not/
Google已将其缓存: http://74.125.155.132/search?q=cache:wpZnhsbJGt0J:james.padolsey.com/javascript/double-bitwise-not/+double+bitwise+not&cd=1&hl=en&ct=clnk&gl=us
但Wayback Machine节省了一天!http://web.archive.org/web/20100422040551/http://james.padolsey.com/javascript/double-bitwise-not/