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

Niedokładność rzędu 0.1 lub 0.01 przy operacjach na float



  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
10 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 25.12.2014 20:27

Witam,

 

Mam taki problem, że jest niedokładność przy liczeniu na floatach.

SS'y w załączniku:

 

kod:

formatex(x, charsmax(x), "Wytrzymalosc \r(%i/%i) (+%i) \y(Zmniejsza obrazenia o \r%0.2f%%\y)", wytrzymalosc_gracza[id], limit, PobierzWytrzymalosc(id, 0, 1, 1), floatmul(float(PobierzWytrzymalosc(id, 1, 1, 1)), 0.26));
formatex(z, charsmax(z), "Kondycja \r(%i/%i) (+%i) \y(Zwieksza predkosc o \r%i\y)", kondycja_gracza[id], limit, PobierzKondycje(id, 0, 1, 1), PobierzKondycje(id, 1, 1, 1));
formatex(e,charsmax(e), "Obrazenia \r(%i/%i) (+%i) \y(Zwieksza obrazenia o \r%0.1f%%\y)", obrazenia_gracza[id], limit, PobierzObrazenia(id, 0, 1, 1), floatmul(float(PobierzObrazenia(id, 1, 1, 1)), 0.5));
formatex(a, charsmax(a), "Zrecznosc \r(%i/%i) (+%i) \y(Zwieksza szanse na unik o \r%0.2f%%\y)", zrecznosc[id], limit, PobierzZrecznosc(id, 0, 1, 1), float(PobierzZrecznosc(id, 1, 1, 1))*0.22)

Co może być przyczyną niedokładności?


  • +
  • -
  • 1

#2 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 26.12.2014 00:33

W czym floatmul jest lepsza od 1.4*3.5, że zasłużyła sobie na wystąpienie?

 

Ja na przykład miałem problemy z floatpower, a okazało się, że przemnożenie przez siebie floata działa świetnie.


  • +
  • -
  • 0

#3 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 26.12.2014 01:52   Najlepsza odpowiedź

http://amxx.pl/topic...aty-i-ich-wady/


  • +
  • -
  • 3

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#4 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 26.12.2014 09:13

Czy właśnie wymusiłem napisanie artykułu?

Czyli jeżeli dobrze rozumiem, to mam postąpić tak:
- mam do pomnożenia 500*0.11
- mnożę 500*11
- dzielę przez 100.0

to jedyny sposób?
  • +
  • -
  • 0

#5 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 26.12.2014 12:08

Napisałem post tutaj, ale wyszedł długi i dość treściwy to pomyślałem, że jeszcze troszkę uzupełnię i zrobię z niego artykuł :) Ale dlaczego minusujesz? :(

 

Wytrzymałość jak mniemam jest liczbą całkowitą? Jeśli całkowitą, to pomnóż PobierzWytrzymalosc razy 100, następnie razy 13 i podziel przez 50 (Twój magiczny mnożnik 0.26 tylko zamieniony na ułamek zwykły, aby unikać floatów) i tak otrzymaną liczbę zapisz w zmiennej, np wynik. Teraz:

formatex(x, charsmax(x), "Wytrzymalosc \r(%i/%i) (+%i) \y(Zmniejsza obrazenia o \r%d.%02d%%\y)", wytrzymalosc_gracza[id], limit, PobierzWytrzymalosc(id, 0, 1, 1), wynik/100, wynik % 100)

W ten sposób zawsze otrzymasz dokładny wynik.

 

%02d wyświetla liczbę na 2ch pozycjach (czyli 2 znaki, ni mniej ni więcej) i uzupełnia zerami, więc jeśli zapodasz 144 dostaniesz 44, jeśli zapodasz 12 dostaniesz 12, jeśli zapodasz 2, dostaniesz 02.


  • +
  • -
  • 4

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#6 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 26.12.2014 12:16

Dzięki wielkie.

Dałem minusa? Sorki, a da sie cofnąć? Bo na wersji mobilnej te przyciski są blisko siebie a zamarznietymi palcami ciezko trafic.


A co z moim sposobem z dzieleniem na koncu przez 100.0? Co w nim nie tak?
  • +
  • -
  • 0

#7 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 26.12.2014 13:02

To, że dalej operujesz na floatach, ino trochę później :)


  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#8 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 26.12.2014 13:05

A jak zrobić coś takiego Twoją metodą?

 

Mam state niewidzialnosc, chcę obliczyć w jakim procencie mnie teraz widać.

 

Jak uniknąć tu floatów?

 

(255-niewidka) : 255

 

Pogrubione zawsze będzie całkowite, ale wynik nie :/

 

Jak to zapisać w formacie:

%d.%02d

  • +
  • -
  • 0

#9 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 27.12.2014 16:49

Według mnie jak już używasz procentów to floatów użyj i później floatround


  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#10 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.12.2014 17:41

Ale jak zrobić tym sposobem co Gwyn podał?


  • +
  • -
  • 0

#11 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.12.2014 19:34

 procenty = widocznosc*100/255
Gdzie widoczność to liczba całkowita z przedziału od 0 do 255. Otrzymasz liczbę całkowitą i mimo dzielenia, cały czas operujemy na liczbach całkowitych.
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





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

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