Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 14.06.2012, 11:09
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от devote
у подстваил, и что я должен увидеть?
var bla = 1e21;	   
	if ( parseInt( bla ) != bla ) {
	    alert("bla не целое число");
	} else {
	    alert("bla целое число");
	}
То, что bla не целое число, хотя оно на самом деле целое.
Ответить с цитированием
  #22 (permalink)  
Старый 14.06.2012, 14:21
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от oneguy
То, что bla не целое число, хотя оно на самом деле целое.
на самом деле оно у вас в голове целое, как и у нас тоже.. но не в JavaScript у него извините нет столько памяти что бы держать огромные числа с высокой точностью. Он выделяет память под число, и если оно не лезет в выделенный размер, он его режет, от того точность числа сразу же теряется, и для JavaScript оно становится не целым.

Советую почитать литературу по числа в JS.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #23 (permalink)  
Старый 14.06.2012, 19:57
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от devote Посмотреть сообщение
на самом деле оно у вас в голове целое, как и у нас тоже.. но не в JavaScript у него извините нет столько памяти что бы держать огромные числа с высокой точностью. Он выделяет память под число, и если оно не лезет в выделенный размер, он его режет, от того точность числа сразу же теряется, и для JavaScript оно становится не целым.
В Джаваскрипте числовые значения хранятся в формате double-precision, в котором числа записываются до 52-го двоичного знака после плавающей запятой. Вообще, целые числа для записи в этот формат всегда округляются в целые (или +/-Infinity), но более того, в данном случае числовое значение литерала 1e21 будет в точности 10^21, так как 10^21 меньше 2^70 и делится на 2^21, то есть все единицы в двоичной записи числа 10^21 находятся с 21-го по 69-ый разряды, что в разности даёт не больше 52.
Ответить с цитированием
  #24 (permalink)  
Старый 14.06.2012, 20:25
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

Во сделал своим методом
bla1=4.5;
bla2=4.0;
if(/^[0-9][.][1-9]/.test(bla1)) {alert('bla1 ne celoe chislo');
}
else { alert('bla1 celoe chislo');}
if(/^[0-9][.][1-9]/.test(bla2)) {alert('bla2 ne celoe chislo');
}
else { alert('bla2 celoe chislo');}
Ответить с цитированием
  #25 (permalink)  
Старый 14.06.2012, 20:29
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

oneguy,
ну да вы правы.. для числа с 20-ю нулями конечно вариант говно.
var bla = 1e21;    

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

var bla = 1.1;

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

var bla = "15";

if ( Math.round( 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
Ответить с цитированием
  #26 (permalink)  
Старый 14.06.2012, 21:08
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Вот и прекрасно! По-видимому, лучшего способа, чем через Math.floor, Math.ceil или Math.round, не существует.

Последний раз редактировалось oneguy, 14.06.2012 в 21:11.
Ответить с цитированием
  #27 (permalink)  
Старый 14.06.2012, 21:28
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Столько вариантов и почему-то никто не воспользовался тем, что остаток от деления целого числа на 1 равен 0
function isInt(x) {return x % 1 == 0}
Ответить с цитированием
  #28 (permalink)  
Старый 14.06.2012, 21:41
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Да, действительно, это ещё одно решение.
Ответить с цитированием
  #29 (permalink)  
Старый 14.06.2012, 22:56
Аватар для Джэксон
Аспирант
Отправить личное сообщение для Джэксон Посмотреть профиль Найти все сообщения от Джэксон
 
Регистрация: 21.05.2012
Сообщений: 89

Сообщение от Octane Посмотреть сообщение
Столько вариантов и почему-то никто не воспользовался тем, что остаток от деления целого числа на 1 равен 0
function isInt(x) {return x % 1 == 0}
нее.. тут хитро. а если нецелое число = 5,2552. Тогда при делении на 1 частное не будет равно нулю. Тогда тоже надо писать функцию для проверки целое частное или нет
Ответить с цитированием
  #30 (permalink)  
Старый 14.06.2012, 22:59
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

лучше проверять, прежде чем писать
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить нажата какая-либо клавиша или нет? Бобр Общие вопросы 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