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