Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.06.2012, 18:25
Люблю js, jquery
Отправить личное сообщение для dadli Посмотреть профиль Найти все сообщения от dadli
 
Регистрация: 23.08.2011
Сообщений: 214

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

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

но интересно не сушествует более громатни способ? что-то наподобие такого функции is_float() ?
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2012, 18:27
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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 целое число");
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 13.06.2012 в 18:31.
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2012, 22:06
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

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

Поэтому первое решение devote неправильное.
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2012, 22:21
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

Последний раз редактировалось Deff, 13.06.2012 в 22:27.
Ответить с цитированием
  #5 (permalink)  
Старый 13.06.2012, 22:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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

alert( true === isFloat(3.9) === !isFloat(4) === !isFloat(4.0) === isFloat(4.000000001) );
Ответить с цитированием
  #6 (permalink)  
Старый 13.06.2012, 22:50
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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

if ( parseInt( bla ) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}
или тот что показал Deff
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #7 (permalink)  
Старый 13.06.2012, 22:51
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от melky
Нужно ли считать 4.0 нецелым числом?
если такое попадается, то это уже не число а строка.
var bla = 4.0;

if ( parseInt( bla ) != bla ) {
    alert("bla не целое число");
} else {
    alert("bla целое число");
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 13.06.2012, 22:52
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote Посмотреть сообщение
если такое попадается, то это уже не число а строка.
Кстати, почему ноль отбрасывается?
alert( 4.0 );
Ответить с цитированием
  #9 (permalink)  
Старый 13.06.2012, 22:54
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от melky
Кстати, почему ноль отбрасывается?
потому что интерпретатор число переводит в целое число, если у него нет остатков, или остаток нулевой.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 13.06.2012, 23:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Сообщение от melky Посмотреть сообщение
Нужно ли считать 4.0 нецелым числом?
Тогда уж так:
function isFloat(num) { return parseInt( num ) !== parseFloat( num ) }
alert([
isFloat('4.0'),
isFloat('4'),
isFloat(4),
isFloat(4.1)
].join('\n'));



=)
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить нажата какая-либо клавиша или нет? Бобр Общие вопросы Javascript 34 11.11.2016 18:42
Как проверить анимируется в данный момент элемент или нет sysya jQuery 2 15.01.2010 00:32
существует элемент или нет? зверек Элементы интерфейса 8 22.06.2009 12:36
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09