Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Filip
Člen
Avatar
Filip:9.6.2019 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.6.2019 19:25
Avatar
Odpovídá na Filip
Martin Konečný (pavelco1998):9.6.2019 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.6.2019 19:33
Nahoru Odpovědět
9.6.2019 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.6.2019 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.6.2019 20:00
Avatar
Filip
Člen
Avatar
Filip:9.6.2019 20:16

screen z debugu

 
Nahoru Odpovědět
9.6.2019 20:16
Avatar
Petr Langer
Člen
Avatar
Odpovídá na Filip
Petr Langer:9.6.2019 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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
9.6.2019 21:14
Avatar
Filip
Člen
Avatar
Odpovídá na Petr Langer
Filip:9.6.2019 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.6.2019 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.