определить число целое или нет
здравствуите
хочу понимать число целое или нет, сделаю так
var bla = 3.9;
if (Math.ceil(bla) - bla > 0) {
alert("bla не целое число");
}
else {
alert("bla целое число");
}
но интересно не сушествует более громатни способ? что-то наподобие такого функции is_float() ? |
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 целое число");
}
|
var bla = 0.0000001;
if ((bla+"").indexOf(".") > 0) {
alert("bla не целое число");
} else {
alert("bla целое число");//этот работает
}
Поэтому первое решение devote неправильное. |
var bla = 0.0000001;
if ( ((1+bla)+"").indexOf(".") > 0 ) {
alert("bla не целое число");
} else {
alert("bla целое число");//этот работает
}
|
Нужно ли считать 4.0 нецелым числом?
function isFloat(num) {
return num.toFixed() != num;
}
alert( true === isFloat(3.9) === !isFloat(4) === !isFloat(4.0) === isFloat(4.000000001) );
|
Ну используйте значит второй вариант:
var bla = 0.0000001;
if ( parseInt( bla ) != bla ) {
alert("bla не целое число");
} else {
alert("bla целое число");
}
или тот что показал Deff |
Цитата:
var bla = 4.0;
if ( parseInt( bla ) != bla ) {
alert("bla не целое число");
} else {
alert("bla целое число");
}
|
Цитата:
alert( 4.0 ); |
Цитата:
|
Цитата:
function isFloat(num) { return parseInt( num ) !== parseFloat( num ) }
alert([
isFloat('4.0'),
isFloat('4'),
isFloat(4),
isFloat(4.1)
].join('\n'));
=) |
Ксать, раз такая тема
Не поделитесь самым коротким кодом определения : Чёт/Нечёт (Часто востребовано... |
Цитата:
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"));
|
devote,
Спасибо, а есть еще варианты ? (В микроассеблере самый короткий сдвигом разряда |
Цитата:
|
Цитата:
Ксать второй вопрос был более не про длину уже, а нечно подобное(Желательно и для ИЕ isEvenNumber( num ) у мну в ИЕ не пашет |
Цитата:
Цитата:
|
Цитата:
var bla = 1e21;
if ( parseInt( bla ) != bla ) {
alert("bla не целое число");
} else {
alert("bla целое число");
}
|
Цитата:
function isEvenNumber( num ) { return !(num & 1) }
alert([
isEvenNumber( 2.7 ),
isEvenNumber( 2.8 )
].join("\n"));
на солнце перегрелся :) |
Цитата:
|
devote, спасибо за ответ) Я это уже понял, поэтому и написал, что
Цитата:
извините ) |
Цитата:
|
Цитата:
Советую почитать литературу по числа в JS. |
Цитата:
|
Во сделал своим методом ;)
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');}
|
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 целое число");
}
|
Вот и прекрасно! По-видимому, лучшего способа, чем через Math.floor, Math.ceil или Math.round, не существует.
|
Столько вариантов и почему-то никто не воспользовался тем, что остаток от деления целого числа на 1 равен 0
function isInt(x) {return x % 1 == 0}
|
Да, действительно, это ещё одно решение.
|
Цитата:
|
лучше проверять, прежде чем писать ;)
|
| Часовой пояс GMT +3, время: 23:30. |