Вытянуть только целую часть
Есть число:
2.11 или 2.50 или 2.99 Как мне отсюда вытянуть "2", независимо от цифр, что идут после точки ? |
Math.floor
|
Спасибо!
|
alert([~~2.99, ~~2.50, ~~2.11]) |
B@rmaley.e><e,
Забавно) |
B@rmaley.e><e,
ухты, идея супер ) |
ага, спасиб
|
(function(){
var i,
num = 2.50,
now = new Date().getTime();
for ( i = 1000000; i--; ) Math.floor(num);
alert('Math.floor: ' + (new Date().getTime() - now) + 'ms');
now = new Date().getTime();
for ( i = 1000000; i--; ) ~~num;
alert('~~: ' + (new Date().getTime() - now) + 'ms');
}());
В ИЕ и в Опере ~~ лидирует с огромным отрывом, в ФФ разница почти незамента (~5%). Интересно :) UPD В Сафари тоже перевес на стороне ~~, а вот Chrome говорит, что Math.floor на 5-10% быстрее ;) |
Цитата:
И еще: ~~ не эквивалентен Math.floor'у. alert( [~~-5.5, Math.floor(-5.5)] ) UPD: n|0
(function(){
var i,
num = 2.50,
now = +new Date, a = [];
for (i = 1000000; i--; ) Math.floor(num);
a.push('Math.floor: ' + (new Date().getTime() - now) + 'ms');
for (i = 1000000, now = +new Date; i--; ) ~~num;
a.push('~~: ' + (new Date().getTime() - now) + 'ms');
for ( i = 1000000, now = +new Date(); i--; ) num|0;
a.push('0|: ' + (new Date().getTime() - now) + 'ms');
for ( i = 1000000, now = +new Date(); i--; ) num<<0;
a.push('<<0: ' + (new Date().getTime() - now) + 'ms');
for ( i = 1000000, now = +new Date(); i--; ) num>>0;
a.push('>>0: ' + (new Date().getTime() - now) + 'ms');
alert(a.join('\n'));
}());
Новый вариант уделывает Math.floor в хромом.В опере и ие8 он лучше ~~. В FF не лучше ~~ (порой отстает на несколько мс). |
О, последний вариант мне нравится :)
|
| Часовой пояс GMT +3, время: 00:31. |