Witam. Zbytnio się nie bawiłem z liczbami zmiennoprzecinkowymi, ale postanowiłem zacząć.
Zacznę od omówienia do czego ma to służyć. Każdy gracz posiada posiada pewną zmienną(załóżmy np. poziom[33]). Zmienna ta przyjmuje wartość od 0 do 400. Wartość ta jest liczbą całkowitą. Chciałem, aby na podstawie tej zmiennej graczowi była przypisywana ranga. Stworzyłem więc takie "cudo":
new const ranga[6][]={ "Ranga I", "Ranga II", "Ranga III", "Ranga IV", "Ranga V", "Ranga IV" }
Następnie w hudzie dałem wyświetlanie tej rangi w zależności od wartości zmiennej poziom[id]. Otrzymałem takie coś:
ShowSyncHudMsg(id, SyncHudObj, ".:|Stopien : %s|:.", ranga[floatround((poziom[id]+1)/100, floatround_ceil)]);
Dałem tam poziom[id]+1, żeby nie było dzielenia 0 przez 100
Oraz patrząc na budowę floatround widać, że dałem zaokrąglanie w górę. Teoretycznie, jeżeli zmienna poziom[id] przyjmie wartość np. 300 to floatround powinno zwrócić 4. Tak się jednak nie dzieje, bo non stop przy zmiennej poziom[id] większej niż 100 zwraca tę samą wartość(nie zmienia się ranga). Postanowiłem więc pominąć wyświetlanie rangi, ustalić stałą wartość pod poziom[id] oraz zmienić formatowanie tekstu(na wyświetlanie liczb). Otrzymałem więc:
ShowSyncHudMsg(id, SyncHudObj, ".:|Stopien : %d|:.", floatround((300+1)/100, floatround_ceil));
Wyświetliło:
.:|Stopien : 1|:.
I proszę mi powiedzieć, jaki ja tu błąd zrobiłem? floatround konstruowałem wg dokumentacji amxx.