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; |
|
|
|
|
|
|