NukeBoards

Pomoc - [TGF/MMF]Procent

Fadex - 26-07-2006, 15:20
: Temat postu: [TGF/MMF]Procent
Czy jest plugin pozwalający obliczyć jakim procentem jednej liczby jest druga liczba?
Kaytek - 26-07-2006, 15:24
:
Nie, ale jest na to wzór. :P
Fadex - 26-07-2006, 15:27
:
Kaytek napisał/a:
Nie, ale jest na to wzór. :P

Łał, serio? ;]
Tylko jak go zapisać w TGF/MMF?
Kaytek - 26-07-2006, 15:40
:
Normalnie? :P Trzy liczniki, ustaw wartość licznika na (tutaj wpisujesz swój wzór, za liczby podstawiasz wartości liczników 1 i 2) i już.
trocha - 26-07-2006, 15:49
:
Jeśli dalej nie rozumiesz, tu masz przykładjak ci się otworzy kliknij w: "procent"
Fadex - 26-07-2006, 16:00
:
Sry, ale jakoś ostatnio z matmy za dużo nie pamiętam ;P
Dzięki trocha :]

PS: Twój przykład nie działa dostatecznie dobrze, trzeba to obliczyć tak:

Kod:
( value( "Counter 1" ) * 100 ) / value( "Counter 2" )

A nie tak:

Kod:
value( "Counter 1" ) * 100 / value( "Counter 2" )

Minty - 26-07-2006, 17:29
:
Sprawdź jeszcze:

Kod:
( value("1") * 100 + value("2") / 2) / value("2")

Zaokrągla naturalnie, czyli np. 55,9 zaokrągli do 56, a nie do 55 (jak to robi zwykle TGF).


Z kolei w MMF wystarczy zrobić tak:

Kod:
( value("1") * 100.0 ) / value("2")

Różnicą jest ".0" po setce, która zamienia liczbę z typu całkowitego na zmiennoprzecinkowe. Pokazuje wtedy liczby po przecinku.
Fadex - 26-07-2006, 17:35
:
Dzięki, ale dokładne zaokrąglanie nie jest tu konieczne :)
Projekt na razie w TGF.
Lukas - 28-07-2006, 14:11
:
RomanX napisał/a:
Sprawdź jeszcze:

Kod:
( value(1) * 100 + value(2) / 2) / value(2)

Zaokrągla naturalnie, czyli np. 55,9 zaokrągli do 56, a nie do 55 (jak to robi zwykle TGF).


Sorry za offtopic, ale nie łatwiej zrobić

Kod:
( value("1")/value("2")*100+0.5


i pozwolić tgfowi po swojemu zaokrąglić, czyli do dołu? :) Pomija się jedno dzielenie, które jest kilkukrotnie dłużej wykonywane niż operacja dodawania, co przy dużej ilości takich operacji może lekko przyśpieszyć program :)
Minty - 28-07-2006, 16:47
:
Zgubił Ci się jeden nawias, a TGF nie obłsuguje liczb zmiennoprzecinkowych.

Poza tym nowoczesne procesory wykonują mnożenia i dzielenia o wiele wydajniej, niż 15 lat temu, przyspieszenie byłoby żadne :P Zresztą i tak wzór jest zupełnie pozbawiony sensu, bo działa tylko w MMF, ale dodaje zbędną wtedy liczbę (0.5). Sprawdzałeś?
Lukas - 28-07-2006, 17:07
:
tego 1 nawiasu miało nie być :P

Nie sprawdzałem, a zapomniałem o tym, że tgf nie obsługuje liczb zmiennoprzecinkowych :P

Bynajmniej ja programując, używam swojego wzoru, wygląda to tak:


Kod:
value("1")/value("2")*100+0.5


zaokrąglone liczby w skali 0-1 powinny wyglądać tak:

0.0 - 0
0.1 - 0
0.2 - 0
0.3 - 0
0.4 - 0
0.5 - 1
0.6 - 1
0.7 - 1
0.8 - 1
0.9 - 1
1.0 - 1

tgf, podobnie jak w programowaniu przy konwersji zmiennej typu float na zmienną typu int, "zaokrągla w dół, wulgarnie odcinając cyfry po przecinku, czyli tak:

0.0 - 0
0.1 - 0
0.2 - 0
0.3 - 0
0.4 - 0
0.5 - 0
0.6 - 0
0.7 - 0
0.8 - 0
0.9 - 0
1.0 - 1

Jak można w prawidłowy sposób zaokrąglić liczbę? dodając do niej 0.5, a następnie odcinając liczby po przecinku. Przykład:

0.0 - (dodajemy 0.5) - 0.5 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 0
0.1 - (dodajemy 0.5) - 0.6 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 0
0.2 - (dodajemy 0.5) - 0.7 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 0
0.3 - (dodajemy 0.5) - 0.8 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 0
0.4 - (dodajemy 0.5) - 0.9 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 0
0.5 - (dodajemy 0.5) - 1.0 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 1
0.6 - (dodajemy 0.5) - 1.1 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 1
0.7 - (dodajemy 0.5) - 1.2 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 1
0.8 - (dodajemy 0.5) - 1.3 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 1
0.9 - (dodajemy 0.5) - 1.4 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 1
1.0 - (dodajemy 0.5) - 1.5 - (teraz tgf, czy konwerter liczb float na int, odcina liczby po przecinku) - 1

W ten sposób możemy uzyskać prawidłowo zaokrąglone liczby :)

Mam nadzieję, że mnie zrozumieliście, bo trochę zamotałem :p


Mam świadomośćtego, że teraz procki są o niebo wydajniejsze, ale jak mówiłem, przy dużej ilości takich operacji, np przy zaokrąglaniu elementów tablicy kilkusettsięczno elementowej, odczuje się różnicę :)
Minty - 28-07-2006, 17:36
:
Ale żeś się rozpisał...

Chodzi mi o to, że są zupełnie inne procedury w procesorach, niż kiedyś, przez co mnożenia i dzielenia są o wiele bardziej zbliżone do dodawań.

Ale koniec już offtopa :)