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

dadli 13.06.2012 18:25

определить число целое или нет
 
здравствуите

хочу понимать число целое или нет, сделаю так
var bla = 3.9;
    if (Math.ceil(bla) - bla > 0) {
    	alert("bla не целое число");
    }
    else {
    	alert("bla целое число");
    }

но интересно не сушествует более громатни способ? что-то наподобие такого функции is_float() ?

devote 13.06.2012 18:27

var bla = 3.9;

if ((bla+"").indexOf(".") > 0) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}
или
var bla = 3.9;

if ( parseInt(bla) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}

var bla = 45;

if ( parseInt(bla) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}

oneguy 13.06.2012 22:06

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

Поэтому первое решение devote неправильное.

Deff 13.06.2012 22:21

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

melky 13.06.2012 22:50

Нужно ли считать 4.0 нецелым числом?
function isFloat(num) {
    return num.toFixed() != num;
}

alert( true === isFloat(3.9) === !isFloat(4) === !isFloat(4.0) === isFloat(4.000000001) );

devote 13.06.2012 22:50

Ну используйте значит второй вариант:
var bla = 0.0000001;

if ( parseInt( bla ) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}
или тот что показал Deff

devote 13.06.2012 22:51

Цитата:

Сообщение от melky
Нужно ли считать 4.0 нецелым числом?

если такое попадается, то это уже не число а строка.
var bla = 4.0;

if ( parseInt( bla ) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}

melky 13.06.2012 22:52

Цитата:

Сообщение от devote (Сообщение 181259)
если такое попадается, то это уже не число а строка.

Кстати, почему ноль отбрасывается?
alert( 4.0 );

devote 13.06.2012 22:54

Цитата:

Сообщение от melky
Кстати, почему ноль отбрасывается?

потому что интерпретатор число переводит в целое число, если у него нет остатков, или остаток нулевой.

Aetae 13.06.2012 23:26

Цитата:

Сообщение от melky (Сообщение 181257)
Нужно ли считать 4.0 нецелым числом?

Тогда уж так:
function isFloat(num) { return parseInt( num ) !== parseFloat( num ) }
alert([
isFloat('4.0'),
isFloat('4'),
isFloat(4),
isFloat(4.1)
].join('\n'));



=)


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