Autor Zpráva
Pavel Dumbrovský
Profil
Zdravím,
asi půjde o nějakou blbost, tohle přece musí fungovat:
if( ($pole[5] * $pole[6] * $pole[7])  - ( ($prom1/$prom2) * ($pole[8] * $pole[9] * $pole[10])) == ($pole[15]-$pole[16]) ) {$H2SO43="ok";}

Je to trošku krkolomné, jedná se o výpočet chemických rovnic. Pořád se mi to nechce rovnat, tak jsem si udělal proměnné a do těch jsem fouknul každou stranu:
$test=($pole[5] * $pole[6] * $pole[7])  - ( ($prom1/$prom2) * ($pole[8] * $pole[9] * $pole[10]));
$test2=($pole[15]-$pole[16]); if($test==$test2){echo"ano";}

Obě proměnné jsem si vypsal a výsledek: -0.1158-0.1158 - obě stejné, tak v čem je problém??
Děkuji.
Petr ZZZ
Profil
S kódem ti nepomůžu, ale snad s kyselinou sírovou: H2SO43 je prapodivný vzoreček, řekl bych, že tato sloučenina neexistuje. Pokud je míněna kyselina sírová, tak ta se píše H2SO4 (kyselina siřičitá H2SO3).
TomášK
Profil
Problém je s počítáním s necelými čísly (float/double). Ne každé desetinné číslo lze v binární soustavě reprezentovat konečným zápisem, podobně jako třeba v desítkové soustavě nelze reprezentovat 10/3 = 3.3333. Díky tomu (a nejen díky tomu) dochází při počítání k drobným nepřesnostem a čísla se liší třeba na 10 desetinném místě, i když matematicky by měly být přesně rovny. Podrobný popis najdeš třeba tu: http://en.wikipedia.org/wiki/Floating_point. Řešení je porovnávat absolutní hodnotu rozdílu dvou čísel proti nějakému mrňavému epsilon, tedy čísla prohlásit za rovná, pokud např. |x-y| < 0.0000001.
fuckin
Profil
nebo si to zaokrouhli na stejny pocet mist a pak to porovnej.

Float má jeden problém a to ten ze jeho cisla jsou nepresna.
Pavel Dumbrovský
Profil
Dík za nápady, to zaokrouhlení pro mě asi bude přijatelnější.
Petr ZZZ:
Díky za věcnou připomínku, čekal jsem něco podobně chytrého. Když dělám chemickej program, tak asi znám vzorec k. sírové, nemyslíš? (Ten zná i naše kočka) Jedná se o třetí proměnnou pro H2SO4, když jsem to nedal do pole, nic jiného mi nezbylo, než za vzorec přidat další číslo.
Petr ZZZ
Profil
Pavel Dumbrovský:

Díky za věcnou připomínku, čekal jsem něco podobně chytrého.
Tak to jsem rád, že jsem tvé očekávání nezklamal.

Když dělám chemickej program, tak asi znám vzorec k. sírové, nemyslíš?
Ne. Není v mých jasnosilách odhalit souvislost mezi znalostmi programování a znalostmi chemie.

Ten zná i naše kočka
Blahopřeji.



Byl bych ti zavázán, kdyby ses příště pokusil vystupovat o něco zdvořileji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0