Просмотр полной версии : проверка на целое число...
собственно, сабж.
иZ выпавшего числа нужно отобрать только целое или с одним Zнаком после Zапятой...
определить как? Zапутался... :confused:
Округлить, что ли?
Поройтесь по поиску (недавно тема была) или по хелпу (Math)
округлить - не надо. читай внимательнее...
а про поиск ты не расска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);
}
вот так вот...:)
раZ по-другому нельZя, буду так!
Спасибки! Копирую... :cool:
+=Metlio=+
02.10.2003, 23:19
Ещё вариант, извращенский до ужаса :) но скажу всё таки :)
Сделать свой дин.текст на столько кортким, чтоб помещалась только одна цифра
:D :D :D
извините...правда...
Пушистик
02.10.2003, 23:59
+=Metlio=+, лучше бы этого не писал... :D
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 можно найти число которое не подойдет!
2Пушистик, не будем спорить, а то надо будет во флейм переезжать.
2Ravescape, а я и вопрос - то не понял. Просто среагировал на ошибку Пушистика. Умолкаю, но хотелось бы услышать мнение БивиЗа.
ну не хватило у меня ума, не такой котелок :)
Zа варианты спасибо . Числа у меня не большие... писал генерилку формул для устного счета.
пришлось ещё дописать (Math.floor(ans) == ans) && ans<100 && ans!==0 && ans!==isNaN)
"isNaN " - на случай, когда ans = бесконечности.
ещё раZ спасибо постившим.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.