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
Dokładność obliczeń
Autor Wiadomość
vanioch 
Przyjaciel


Wiek: 38
Dołączył: 27 Lut 2011
Posty: 49
Skąd: bydgoszcz
Wysłany: Pon 21 Mar, 2011 18:51   Dokładność obliczeń

Witam,
Mam prosty kod który mnoży mi liczbę przez jakąś stałą:
wynik=Number(ja.text)*6555.555;
chcę otrzymać wynik zaokraglony do 5 miejsc więc stosuję dobrze znaną metodę
temp=int(wynik*100000)/100000;
wszystko jest ok jeśli wpiszę 1 wynik jest poprawny ale jak już wpiszę 10 jest kosmiczny
wynik dla 1 = 6555.555 a dla 10 = 20343795902,
co ciekawe jak będe chciał dzielić przez stałą tzn: wynik=Number(ja.text)/6555.555; i potem zaokraglać wszystko gra dla najrozmaitszych danych wejściowych.
Zna ktoś sposób rozwiązania problemu?
 
     
^Januszr 



Pomógł: 216 razy
Dołączył: 11 Maj 2005
Posty: 1854
Skąd: Stolyca od urodzenia
Wysłany: Pon 21 Mar, 2011 20:23   

nie znam tej dobrze znanej metody. Używam dobrze znanej od FP5 komendy Math.round - co oczywiście polecam. Przykład:
Kod:
Eresult.text = Math.round (((Number(df.text)*Number(lo.text))/(Number(g.text)*Number(b.text)*Number(dl.text*Number(vbelki.text)/Number(vpap.text))))*100)/100;


Dosyć usilnie szukałem, ale nie znalazłem twojego SWI, więc nie chce mi się nawet domyślać, gdzie masz błędy.
_________________
Niestety używam nieoficjalnych wersji Swish, które można zassać z forums.swishzone.com - jest na szczycie listy w BugsForum.
 
     
vanioch 
Przyjaciel


Wiek: 38
Dołączył: 27 Lut 2011
Posty: 49
Skąd: bydgoszcz
Wysłany: Pon 21 Mar, 2011 21:41   

A mógłbyś z grubsza wyjaśnić jak jej używać tzn co oznaczają poszczególne parametry.
SWI zapomniany dołączony
 
     
^Januszr 



Pomógł: 216 razy
Dołączył: 11 Maj 2005
Posty: 1854
Skąd: Stolyca od urodzenia
Wysłany: Pon 21 Mar, 2011 22:14   

do SHAPE (tego co zrobiłeś guzikiem) daj skrypt:
Kod:
on (press) {
   var a = .1;
   wynik.text=Math.round (Number((input1.text)*6555.555)/a)*a;
}

i pozamieniaj sobie wartość a na 1, 100, 1000 etc - wydaje mi się, że sam sobie wyjaśnisz jak chwilę się pobawisz.

A odnośnie do tego, co zrobiłeś, to skrypt w następującej postaci:
Kod:
on (press) {
     wynik11=Number(input1.text)*6555.555; 
     var temp1=int((wynik11*100000)/100000);
     wynik.text=temp1;
}

dosyć dobrze działa.
To chyba koniec problemu, bo idę spać :)
_________________
Niestety używam nieoficjalnych wersji Swish, które można zassać z forums.swishzone.com - jest na szczycie listy w BugsForum.
 
     
vanioch 
Przyjaciel


Wiek: 38
Dołączył: 27 Lut 2011
Posty: 49
Skąd: bydgoszcz
Wysłany: Wto 22 Mar, 2011 07:12   

Racja po problemie dzięki wielkie
 
     
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:  

SWiSH - Create Flash animaton the easy way

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.11 sekundy. Zapytań do SQL: 11