Autor | Zpráva | ||
---|---|---|---|
PHP_Nemaster Profil |
#1 · Zasláno: 14. 7. 2009, 22:08:29
Dobrý den, stala se mi dnes taková věc. Nefunfuje mi floor ani ceil tak jak má.
Dělám něco jako hru a mám takový to kód, který ošetřuje bitvu. // vypočítá, kolik procent z útoku je obrana, toto procento představuje vojáky zabité v útoku z celkového počtu útočníků. $count_proc_cattack = $defense * 100 / $atw; // Vydělí výsledek na 100, aby se ztráty nepočítaly jako třeba 5000 * 75, ale 5000 * 0.75 . $cpking = $count_proc_cattack / 100; // Zaokrouhlí, a tady nastává chyba, pokaždé to vyhodí nulu. Při ceil to vyhodí plný počet jednotek. $floor_cpking = floor( $cpking ); //Ošetří ztráty, ale nefunfuje. $casualties_king = $_POST['king'] * $floor_cpking; if ( $casualties_defense > $defense ) { $casualties_defense = $defense; } Pokud jste to nepochopili ( což je asi dost pravděpodobné :( ), tady jsou obrázky: Tohle se mi stane, pokud nepoužiji floor ( výsledek je správný, ale chtěl bych to bez desetin ) : http://amaga.czweb.org/floor_nefunkcni.jpg Tohle chci udělat: http://amaga.czweb.org/takto_ma_vypadat.jpg A tohle se mi děje, když použiji floor(): http://amaga.czweb.org/nula.jpg.jpg Předem děkuji za odpověd'. ( PS: Nechtěl jsem zahlcovat fórum celým zdrojem ( asi 2x delším než uvedený "výstřižek" ), v případě potřeby ho však určit pošlu ). |
||
Nox Profil |
#2 · Zasláno: 14. 7. 2009, 22:12:17
Bylo by asi lepší celý kód, ale... co je v tom postu? Nejdřív zaokrouhlíš a pak zase násobíš, nemůže to být tím? floor funguje skoro na 100% dobře,
nejspíš buď je číslo modifikované ještě po jeho aplikaci, nebo výsledek zakrouhlení nějak není použitý nebo něco, nevim, bez kódu by to bylo hádání, tak prosím kód a vstupní hodnoty |
||
tiso Profil |
#3 · Zasláno: 14. 7. 2009, 22:18:00
PHP_Nemaster: aká je hodnota $cpking?
btw. strašné názvy premenných... |
||
keeehi Profil |
#4 · Zasláno: 14. 7. 2009, 22:21:16
PHP_Nemaster:
Jaké jsou např počáteční hodnoty těch proměných? pokud je v proměné $cpking to 0.75 pak to není chyba ve flooru, ale v tvojí matemtice procenta => $cpking => $floor_cpking 0% => 0.0 => 0 20% => 0.2 => 0 99% => 0.99 => 0 když floor zaokrouhluje vždy dolů, a ty máš vstup v rozmezí 0-1, tak kromě 100% => 1 ti to zaokrouhlí dolů na tom není nic divného. Nejspíš jsi to chtěl napsat takto $casualties_king = floor($_POST['king'] * $cpking); |
||
PHP_Nemaster Profil |
#5 · Zasláno: 15. 7. 2009, 16:53:11 · Upravil/a: PHP_Nemaster
Keehi: Přesně tak, děkuju. Nebo rovnou zaokrouhlit výsledek.
|
||
Časová prodleva: 15 let
|
0