Вход

Просмотр полной версии : проверка на целое число...


BeaviZ
02.10.2003, 18:54
собственно, сабж.
иZ выпавшего числа нужно отобрать только целое или с одним Zнаком после Zапятой...

определить как? Zапутался... :confused:

major
02.10.2003, 19:09
Округлить, что ли?
Поройтесь по поиску (недавно тема была) или по хелпу (Math)

BeaviZ
02.10.2003, 19:17
округлить - не надо. читай внимательнее...

а про поиск ты не расскаZывай... не со вчера тут! :mad:

Пушистик
02.10.2003, 21:15
вот сделал для тебя функцию:


function checkN(number) {
str = number.toString();
len = str.length;
last = str.lastIndexOf(".");
after = str.substring(last+1,str.length).length;
if (last==-1||after==1) {
return number;
}
}


вызывается так:
checkN(55.6);
возвращяет только целые числа и числа с одним знаком после запятой...
можешь проверить так:

trace(checkN(55.6));

вернет 55.6

trace(checkN(55.76));

ничего не возвращяет(undefined)...
если не нравится что возращяет undefined так можно сделать вот так:


function checkN(number) {
str = number.toString();
len = str.length;
last = str.lastIndexOf(".");
after = str.substring(last+1,str.length).length;
if (last==-1||after==1) {
return "Подходит";
} else {
return "Не подходит";
}
}
trace(checkN(1.7));



тогда например чтобы вывести ответ в поле text кнопкой нужно повесить на нее код:


on (release) {
text = checkN(1.7);
}

вот так вот...:)

BeaviZ
02.10.2003, 22:07
раZ по-другому нельZя, буду так!

Спасибки! Копирую... :cool:

+=Metlio=+
02.10.2003, 23:19
Ещё вариант, извращенский до ужаса :) но скажу всё таки :)

Сделать свой дин.текст на столько кортким, чтоб помещалась только одна цифра
:D :D :D
извините...правда...

Пушистик
02.10.2003, 23:59
+=Metlio=+, лучше бы этого не писал... :D

major
03.10.2003, 12:16
2Пушистик
Ню-ню...
Попробуйте на досуге что выдаст ваша функция в следующих случаях:
trace(checkNN(1700000000000000));
trace(checkNN(0.000000000000001));

2BeaviZ
Зря Вы всетаки тему об округлении не посмотрели.
А функция проверки может выглядеть так

function checkNN(number) {
if((Math.abs(number)*10)==Math.floor(Math.abs(number)*10)){
return(true);
}
return(false);
}

Пушистик
03.10.2003, 16:56
major, то же самое могу сказать и про вашу функцию....

trace(checkNN(10000000000000000000000000.56454));
trace(checkNN(14444444444444444444444444400.778));


так что сумничать тоже не получилось :D

+=Metlio=+
03.10.2003, 21:38
+=Metlio=+, лучше бы этого не писал...
:D Я тоже так думаю, а вдруг подойдет :)

Ravescape
03.10.2003, 23:13
yourNumber = 2232.4;
if (Math.floor(yourNumber) == yourNumber ){
trace("da" );
} else {
trace("net");
}

Ravescape
03.10.2003, 23:16
esli odin znak

yourNumber = 2232.50;

if (Math.floor(yourNumber*10) == yourNumber*10 ){
trace("da" );
} else {
trace("net");
}

Ravescape
03.10.2003, 23:22
ne zametil chto major otvetil na vopros.

Пушистик
04.10.2003, 01:01
по любому и в моей функции и в major'a можно найти число которое не подойдет!

major
06.10.2003, 13:48
2Пушистик, не будем спорить, а то надо будет во флейм переезжать.
2Ravescape, а я и вопрос - то не понял. Просто среагировал на ошибку Пушистика. Умолкаю, но хотелось бы услышать мнение БивиЗа.

BeaviZ
08.10.2003, 20:39
ну не хватило у меня ума, не такой котелок :)
Zа варианты спасибо . Числа у меня не большие... писал генерилку формул для устного счета.

пришлось ещё дописать (Math.floor(ans) == ans) && ans<100 && ans!==0 && ans!==isNaN)

"isNaN " - на случай, когда ans = бесконечности.


ещё раZ спасибо постившим.