определить число целое или нет
здравствуите
хочу понимать число целое или нет, сделаю так 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, время: 11:54. |