Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Zaokrąglanie floatu


  • Zamknięty Temat jest zamknięty
4 odpowiedzi w tym temacie

#1 A może sma?

    Godlike

  • Power User

Reputacja: 546
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 04.08.2011 17:57

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)

  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 04.08.2011 18:17

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 :)
  • +
  • -
  • 1

#3 A może sma?

    Godlike

  • Autor tematu
  • Power User

Reputacja: 546
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 04.08.2011 18:27

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

  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 04.08.2011 18:51

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

  • +
  • -
  • 1

#5 A może sma?

    Godlike

  • Autor tematu
  • Power User

Reputacja: 546
Wszechwiedzący

  • Postów:1 464
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 04.08.2011 19:47

Dziękuję :] Działa :]
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych