C/C++ week November Black Friday
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

Diskuze: nefunguje podmienka IF

Aktivity (2)
Avatar
Filip
Člen
Avatar
Filip: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 Filip
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
Filip
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Filip: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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Filip
Člen
Avatar
Filip:9. června 20:16

screen z debugu

 
Nahoru Odpovědět
9. června 20:16
Avatar
Petr Langer
Člen
Avatar
Odpovídá na Filip
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
Filip
Člen
Avatar
Odpovídá na Petr Langer
Filip: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.