Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   определить число целое или нет (https://javascript.ru/forum/misc/29063-opredelit-chislo-celoe-ili-net.html)

Deff 13.06.2012 23:35

Ксать, раз такая тема
Не поделитесь самым коротким кодом определения : Чёт/Нечёт (Часто востребовано...

devote 13.06.2012 23:42

Цитата:

Сообщение от Deff
Не поделитесь самым коротким кодом определения : Чёт/Нечёт (Часто востребовано...

function isEvenNumber( num ) { return !(num & 1) }

alert([
  isEvenNumber( 1 ),
  isEvenNumber( 2 ),
  isEvenNumber( 3 ),
  isEvenNumber( 4 ),
  isEvenNumber( 5 ),
  isEvenNumber( "4" ),
  isEvenNumber( "5" ),
  isEvenNumber( 1.1 ),
  isEvenNumber( 2.1 )
].join("\n"));

Deff 13.06.2012 23:46

devote,
Спасибо, а есть еще варианты ? (В микроассеблере самый короткий сдвигом разряда

devote 13.06.2012 23:47

Цитата:

Сообщение от Deff
а есть еще варианты ?

а куда еще короче то? обычная проверка наличия первого бита.

Deff 13.06.2012 23:48

Цитата:

Сообщение от devote
а куда еще короче то? обычная проверка наличия первого бита.

ясн (еще не юзал такое
Ксать второй вопрос был более не про длину уже, а нечно подобное(Желательно и для ИЕ
isEvenNumber( num ) у мну в ИЕ не пашет

oneguy 14.06.2012 01:24

Цитата:

Сообщение от Deff (Сообщение 181248)
var bla = 0.0000001;
	if ( ((1+bla)+"").indexOf(".") > 0 ) {
	    alert("bla не целое число");
	} else {
	    alert("bla целое число");//этот работает
	}

Подставьте bla=1e-16 :)
Цитата:

Сообщение от Devote
var bla = 4.0;
 
if ( parseInt( bla ) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}

Это тоже неправильно, подставьте bla=1e21

devote 14.06.2012 05:37

Цитата:

Сообщение от oneguy (Сообщение 181287)
... Это тоже неправильно, подставьте bla=1e21

Ну подстваил, и что я должен увидеть?
var bla = 1e21;
  
if ( parseInt( bla ) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}

nerv_ 14.06.2012 09:55

Цитата:

Сообщение от devote (Сообщение 181266)
function isEvenNumber( num ) { return !(num & 1) }

alert([
  isEvenNumber( 1 ),
  isEvenNumber( 2 ),
  isEvenNumber( 3 ),
  isEvenNumber( 4 ),
  isEvenNumber( 5 ),
  isEvenNumber( "4" ),
  isEvenNumber( "5" ),
  isEvenNumber( 1.1 ),
  isEvenNumber( 2.1 )
].join("\n"));

я так понимаю с нецелыми числами оно работать не должно априори
function isEvenNumber( num ) { return !(num & 1) }

alert([
  isEvenNumber( 2.7 ),
  isEvenNumber( 2.8 )
].join("\n"));


на солнце перегрелся :)

devote 14.06.2012 10:41

Цитата:

Сообщение от nerv_
я так понимаю с нецелыми числами оно работать не должно априори

для не целых чисел используется другой алгорит хранения дынных в памяти, а он проверяет бит в на уровне целого числа.

nerv_ 14.06.2012 10:50

devote, спасибо за ответ) Я это уже понял, поэтому и написал, что
Цитата:

Сообщение от nerv_
на солнце перегрелся

но пост решил оставить. Поразрядные операторы работают только с целыми. Т.е. дробная часть попросту будет отброшена.

извините )


Часовой пояс GMT +3, время: 06:28.