Просмотр полной версии : Number
Скажите, плз, а зачем вообще нужен Number, и подскажите как округлять числа до десятых, сотых и т.д.
Спасибо!
Da na zdorov'e! ja i sam ne znau kak ih okrugliat', ja licho s etoj zadachej pri pomoschi funkcii spravlialsia.
iLoveYou
13.01.2003, 17:07
MovieClip.prototype.roundTo = function(theNumber, decPlaces) {
if (decPlaces>=0) {
var temp = Math.pow(10, decPlaces);
return Math.round(theNumber*temp)/temp;
}
};
//применение
trace (roundTo(1.14579, 2))
ЗЫ RTFM
[subway]design
13.01.2003, 17:36
Хорошо, конечно, но правильней будет:
Math.__proto__.roundTo(...){...}
Лучше расширять Math, а не MovieClip, все-таки :)
iLoveYou
13.01.2003, 17:39
Полностью согласен.
Оригинал написал(а) [subway]design
Хорошо, конечно, но правильней будет:
Math.__proto__.roundTo(...){...}
Лучше расширять Math, а не MovieClip, все-таки :)
очччень интересно :)
iLoveYou
13.01.2003, 17:46
ish, что-то смущает?
[subway]design
13.01.2003, 17:47
Я в синтаксисе ошибся?
iLoveYou
13.01.2003, 17:52
Да, вроде, должно работать.
Да, работает.
ну как бы это... хм :)
ну вот пишем:
Math.__proto__.test = function(v) {
trace(v)
}
запускаем :)
Math.test(1)
MovieClip.test(2)
Object.test(3)
MovieClip.prototype.test(4)
new Object().test(5)
new Array().test(6)
пример понятен? :) нужны разьяснения?
Nox Noctis
13.01.2003, 18:15
да простит меня Великий Шаман... :)))
trace(Math.__proto__ == Object.prototype);
и всиооо..... :)
ну нокс взял и все испортил :) я ж было приготовил цельную лекцию на тему )
[subway]design
13.01.2003, 18:20
Я не думал, что есть такая дурь... А что, не существует способов расширить конкретный объект?
(Я понимаю, конечно, что расширять объекты - это изврат сам по себе, не по сишному. Вот классы расширять - это нормально)
2[subway]design
ты будешь смеяться :)))) "расширить" обьект не просто, а очень просто... достаточно сделать следующее :)
math.test = function(v) {
trace(v)
}
iLoveYou
13.01.2003, 18:28
Оригинал написал(а) ish
ну нокс взял и все испортил :) я ж было приготовил цельную лекцию на тему )
Интересно было бы послушать :)
[subway]design
13.01.2003, 21:30
:) Да, смеюсь. Понятия об инкапсуляции во флэше просто нет. Не говорю уже о невозможности объявления переменных, как public и private, впрочем, флэшерам это не нужно :)
sergwizard
14.01.2003, 05:12
Ну, вы - блин - и флудеры. Судя по вопросу, splash совсем новичок, а вы ему мозги запудриваете. А более понятно для него никто не ответил.
x = 12.49378434389;
y = 2.34352
N = 2; //Количество знаков после запятой.
//Хотим вычислить результат x/y с точностью до N знаков после запятой.
k = Math.pow(10, N);
z = Math.round(x/y*k)/k;
trace(z) //Результат 5.33
Dendroid
14.01.2003, 05:39
x = 12.49378434389;
N = 2; //может быть <0 :)
trace(Number(String(x).substr(0,String(x).indexOf(".")+N+1)))
:)
Dendroid
14.01.2003, 05:46
вот и Number, кстати, пригодился :)
Dendroid
14.01.2003, 05:50
Number(String(x).substr(0,String(x).indexOf(".")+N+(n>=0)))
вот так совсем хорошо...
Nox Noctis
14.01.2003, 05:53
короче, склифасовский...
например:
чтобы получить данное дробное число с точность три знака,
тебе нужно округлить _до целого_ число в 1000 раз большее,
и получившееся поделить на 1000 ...
все просто :)))
остальные степени десятки точно так же =)
Всем спасибо за обсуждение моего вопроса. Думаю ответы пригодятся всем новичкам.
По вопросу о функции Number():
Я понял так, что Number() делает число объектом, а до этого нельзя применять свойства к числу, например:
trace ( Number(5).toString() ); // 5
trace ( 5.toString() ); // error
Max N Chubin_
14.01.2003, 14:17
Ребзя есть еще проще решение...
t=123.456;
des=Math.round(t/10)*10; // до десятков
sot=Math.round(t/100)*100; // до сотен
des=Math.round(t*10)/10; // до десятых
sot=Math.round(t*100)/100; // до сотых
то что написал
Nox Noctis
надо быть проще!
;)
ф-ция Number() конвертирует строку в число, т.е. меняет тип переменной. Например:
t="12";
i=34;
summa=t+i;
summa=1234;
происходит автоматическое преобразование типа переменной i в строку, потому что первый операнд СТРОКА
t="12";
i=34;
summa=Number(t)+i;
summa=46;
в данном примере Number() преобразует строку в число
Оригинал написал(а) [subway]design
:) Да, смеюсь. Понятия об инкапсуляции во флэше просто нет. Не говорю уже о невозможности объявления переменных, как public и private, впрочем, флэшерам это не нужно :)
ну почему же... для этого можно использовать ASSetPropFlags
Max N Chubin_
14.01.2003, 15:12
а можно поподробнее о ASSetPropFlags?
если есть ссылка почитать, буду очень благада!
:confused:
Nox Noctis
14.01.2003, 15:28
макс, все уже украдено до нас.... :))
http://chattyfig.figleaf.com/flashcoders-wiki/index.php?ASSetPropFlags
Max N Chubin_
14.01.2003, 15:36
не поверишь - Первый раз слышу!
;)
а забей ради прикола в поиск
"ASSetPropFlags"
вроде год назад енто было первый раз...
ооо, нашел
15-03-2002 19:10
Дениска
"редиска"
;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.