PHP týden Letní akce
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!

Diskuze: nefunguje podmienka IF

Aktivity (2)
Avatar
joon5
Člen
Avatar
joon5:9. června 19:25

Asi 4 hodiny riesim velmi banalny problem:

$cislo1 = $array[$i]['suma'] / $pocet ;
$cislo2 = $array[$i]['cislo'];

if ($cislo1 != $cislo2) {
 echo $cislo1;
 echo $cislo2;
 }

Problem je ten, ze podmienka sa niekedy vykona, hoci su cisla rovnake! Nechavam si ich vypisat cize vidim ze su naozaj rovnake.

Zkusil jsem:

$cislo1 = (float)$array[$i]['suma'] / $pocet ;
$cislo2 = (float)$array[$i]['cislo'];

if ($cislo1 != $cislo2) {
 echo $cislo1;
 echo $cislo2;
 }

...alebo:

$cislo1 = (float)$array[$i]['suma'] / $pocet ;
$cislo2 = (float)$array[$i]['cislo'];

if ($cislo1 <> $cislo2) {
 echo $cislo1;
 echo $cislo2;
}
 
Odpovědět 9. června 19:25
Avatar
Odpovídá na joon5
Martin Konečný (pavelco1998):9. června 19:33

A když si řádek před tím ifem dáš

var_dump($cislo1);
var_dump($cislo2);
exit;

tak to vypíše co?

Edit: vypadá to, že to je kousek kódu v nějakém cyklu. Jsi si jistý, že při daném průchodu cyklu s $i jsou daná čísla vážně stejná? Tzn. zda to není například tak, že se podmínka splní v prvním průchodu, ve druhém, ale ve třetím už ne (a tam že už jsou čísla jiná)?

Editováno 9. června 19:33
Nahoru Odpovědět 9. června 19:33
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
joon5
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
joon5:9. června 20:00

var_dump pouzit nemozem, kod mi to nedovoluje, resp. nevie vypisovat priamo na obrazovku text. Viem vypisat iba obsah premennych a tam su tie cisla rovnake.

Ale aj pri debugovani vo Visual Code vidim, ze tie premenne obsahuju rovnake cisla, su aj rovnakeho typu a ajtak mi to skoci do vnutra podmienky a vykona kod co je v podmienke.... po dlhej dobe si naozaj neviem rady.

 
Nahoru Odpovědět 9. června 20:00
Avatar
joon5
Člen
Avatar
joon5:9. června 20:16

screen z debugu

 
Nahoru Odpovědět 9. června 20:16
Avatar
Petr Langer
Člen
Avatar
Odpovídá na joon5
Petr Langer:9. června 21:14

Problém bude v tom, že porovnáváš floaty a ikdyž se vypisujou jako stejná čísla, tak se ve skutečnosti mohou lišit třeba o jednu miliontinu. Zkus ty čísla zaokrouhlit třeba na čtyři desetinná místa a uvidíš, jestli je to ten problém

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 9. června 21:14
Avatar
joon5
Člen
Avatar
Odpovídá na Petr Langer
joon5:9. června 22:54

Jo, zda sa ze to pomohlo. V tom konkretnom priklade zo screenshotu sa vydelilo cislo 2.1 cislom 6 cize vysledok je 0.35. Ale asi to cislo nebude interne ulozene ako presne 0.35 hoci ho tak ukazuje aj debuger. Kazdopadne diky!

 
Nahoru Odpovědět 9. června 22:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.