SWiSH Forum Strona Główna SWiSH Forum
Forum użytkowników programów SWiSH

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
Linia kodu
Autor Wiadomość
vanioch 
Przyjaciel


Wiek: 37
Dołączył: 27 Lut 2011
Posty: 49
Skąd: bydgoszcz
Wysłany: Sro 07 Gru, 2011 11:49   Linia kodu

Witam cz ktoś może mi wytłumaczyć dlaczego ta linijka kodu powoduje zaokrąglenie liczby do miejsc poprzecinku tulu ile jest w zmiennej d? w sensie co tu się dzieje?
Kod:

var d = 0.00001;
  wynik.text=Math.round (Number((liczba))/d)*d;
 
     
^shastaan 



Pomógł: 72 razy
Dołączył: 09 Gru 2007
Posty: 688
Skąd: Rzeszów
Wysłany: Sro 07 Gru, 2011 13:25   

Nie wiem co tu się dzieje bo "liczba" nie jest zmienną (przynajmniej tutaj nie jest zdefiniowana).
Nie wiem co tu robi to Number.
Nie wiem co zamierzałeś.

Krótko mówiąc ta linijka kodu może coś powoduje u Ciebie ale bez kontekstu zwraca NaN.

Zwróć jednak uwagę na to, że *d jest poza nawiasem. Wynik.text to zaokrąglony wynik jakiegoś ilorazu pomnożony przez 0.00001 więc musi mieć tyle miejsc po przecinku ile var d. Pewnie to źle zapisałeś. Najpierw zaokrągliłeś a potem pomnożyłeś przez 0.00001. To nie w tym błąd?
_________________
Prowadzę stacjonarne i zdalne szkolenia z grafiki, również ze SWiSH. Program ustalany indywidualnie w zależności od potrzeb klienta. Szczegóły na www.kreopka.pl
 
 
     
espe1
Profesjonalista


Pomógł: 16 razy
Dołączył: 02 Lis 2011
Posty: 175
Skąd: łódzkie
Wysłany: Sro 07 Gru, 2011 13:59   

funkcja zaokrąglania:

Kod:

onFrame (1) {
Math.format = function( num, precision, splitCharacter){
if((precision = Math.abs(precision)) == 0) return Math.round(num);
if(splitCharacter == null) splitCharacter = ".";
return  Math.round(num) + splitCharacter + Math.round(num * Math.pow( 10, precision)).toString().substr(-precision);   
}
trace(Math.format(12.345, 2)); //(liczba, liczba miejsc po przecinku)
trace(Math.format(12.34, 2));
trace(Math.format(12.3, 2));
trace(Math.format(12., 2));
trace(Math.format(12, 2));
trace(Math.format(0.345, 2));
trace(Math.format(.345, 2));
trace(Math.format(0.045, 2));
trace(Math.format(0.04, 5));
}
 
     
vanioch 
Przyjaciel


Wiek: 37
Dołączył: 27 Lut 2011
Posty: 49
Skąd: bydgoszcz
Wysłany: Sro 07 Gru, 2011 15:14   

shastaan napisał/a:
Nie wiem co tu się dzieje bo "liczba" nie jest zmienną (przynajmniej tutaj nie jest zdefiniowana).
Nie wiem co tu robi to Number.
Nie wiem co zamierzałeś.

Krótko mówiąc ta linijka kodu może coś powoduje u Ciebie ale bez kontekstu zwraca NaN.

Zwróć jednak uwagę na to, że *d jest poza nawiasem. Wynik.text to zaokrąglony wynik jakiegoś ilorazu pomnożony przez 0.00001 więc musi mieć tyle miejsc po przecinku ile var d. Pewnie to źle zapisałeś. Najpierw zaokrągliłeś a potem pomnożyłeś przez 0.00001. To nie w tym błąd?


kod poprawiony powinien tak wyglądać

Kod:

input.text=liczba;
var d = 0.00001;
 wynik.text=Math.round (Number((liczba))/d)*d;


Wszystko tu działa tylko moje pytanie jest czy to jest jedyny sposób zaokrąglania liczb do tylu ile chcę mijsc po przecinku? oraz jeszcze pytanie teoretyczne: w niektórych skryptach zmienne mają przed soba var a niektóre nie, jaka jest zasada stosowania var?
 
     
^shastaan 



Pomógł: 72 razy
Dołączył: 09 Gru 2007
Posty: 688
Skąd: Rzeszów
Wysłany: Sro 07 Gru, 2011 18:33   

Orajt, nie zrozumiałem pytania.
Nie znałem nawet tego sposobu i obawiam się, że nie podam Ci innego.

Zasada stosowania var jest taka, że jak podasz w jakiejś funkcji zmienną:

n=3;

o on rozpozna "3" jako numer i sam sobie dopowie, że z n chodziło Ci o var typu number i zeby jej przypisać wartość 3. Jeśli napiszesz:

tekst = alamakota;

to on rozpozna "alamakota" jako string i sam sobie dopowie resztę.

Jeśli chcesz to robić za każdym razem porządnie (albo raz na 3 lata chcesz zeby zinterpretował numer jako stringa) to wykorzystaj pełną składnie var (którą znajdziesz, na przykład, w helpie swisha).
_________________
Prowadzę stacjonarne i zdalne szkolenia z grafiki, również ze SWiSH. Program ustalany indywidualnie w zależności od potrzeb klienta. Szczegóły na www.kreopka.pl
 
 
     
espe1
Profesjonalista


Pomógł: 16 razy
Dołączył: 02 Lis 2011
Posty: 175
Skąd: łódzkie
Wysłany: Sro 07 Gru, 2011 19:46   

możesz napisać np:

Kod:

var x: Number = 10;

//lub prościej :-):

x = 10;
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.15 sekundy. Zapytań do SQL: 15