←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Zaokrąglanie floatu

Zablokowany

  • +
  • -
A może sma? - zdjęcie A może sma? 04.08.2011

Siema :]
Jak powinna wyglądać ta funkcja w praktyce:
Dokumentacja AMXX.pl: Core >> float > floatround
Chodzi mi o zaokrąglanie w dół.
Czy to jest poprawne?

wartosc[id] = float(punkty[id]/50)

floatround(wartosc[id], floatround_floor)


Czy może tak:

wartosc[id] = float(punkty[id]/50)

floatround(Float:wartosc[id], floatround_method:method=floatround_floor)
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 04.08.2011

new zaokraglone = floatround(wartosc[id], floatround_floor);

w podanym kodzie masz błąd
wartosc[id] = float(punkty[id]/50)
dzielenie całkowite daje wynik całkowity, np. 25/50 to 0, a 75/50 to 1
żeby otrzymał ułamek musisz dokonać konwersji zanim podzielisz
wartosc[id] = float(punkty[id])/50.0

jak dzielisz przez stałą to raczej pomnóż przez jej odwrotność (1/50 = 0.02)
wartosc[id] = float(punkty[id])*0.02
mnożenie jest szybsze :)
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 04.08.2011

Oki, oki :]
A to nie jest tak, że mnożenie i dzielenie ma taką samą szybkość? W końcu to to samo tylko, że odwrotnie xD

Yyy... A jak jest funkcja float(10) to ona zamienia 10 na 10.0, tak?
Jest coś odwrotnego do tego?

I tego... Zaokrąglona liczba wygląda tak: 1.0 czy tak: 1? I jeszcze jedno: to zapisuję od razu tą liczbę czy tylko ją zwraca?
Użytkownik kisiel96 edytował ten post 04.08.2011 18:36
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 04.08.2011

Hmm w sumie to myślałem o procesorze, a koprocesor chyba też szybciej mnoży niż dzieli.

new Float:dziesiec = float(10);
//new Float:dziesiec = 10.0;

Jest coś odwrotnego do tego?

tak, zaokrąglanie

zaokrąglanie zmienia floata na liczbę całkowitą, wynik jest zwracany; z podaną liczbą rzeczywistą nic się nie dzieje
new zaokraglone = floatround(wartosc[id], floatround_floor);
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 04.08.2011

Dziękuję :] Działa :]
Odpowiedz
Zablokowany