Podmínka If C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podmínka If C++ – C / C++ – Fórum – Programujte.comPodmínka If C++ – C / C++ – Fórum – Programujte.com

 

Jonasberg
~ Anonymní uživatel
6 příspěvků
3. 4. 2013   #1
-
0
-

Ahoj, mám tu celkem primitivní problém 

Vyhodnocuji-li podmínku if, někdy mi podmínka vyhoví a jindy ne a nevím proč.

Podminka mi vyhodnocuje zda je rozdil roven 0,2.

Pokud zadam a = 0,2 , b = 0, rozdil je 0,2 a podminka je splnena

Pokud zadam a = 2,1 , b = 1,9 , rozdil je taky 0,2 a podminka splnena neni???? A nevim proč.

Mockrát děkuji za radu.

#include <iostream>

double a, b, delta, rozdil;
using namespace std;
int pomer;

int main()
{
  a = 0.2;
  b = 0;
    
  delta = 0.2;
  rozdil = (a - b);
  
  cout << endl << "Pred prikazem IF - Rozdil je : " << rozdil << endl;
    
  if (rozdil == delta){
    cout << "PODMINKA IF SE SPLNI - Rozdil je " << rozdil << endl;
    }
    
//-------- OPAKUJI KOD, JEN ZMENIM a A b ----------------------

  a = 2.1;
  b = 1.9;
    
  delta = 0.2;
  rozdil = (a - b);
  
  cout << endl << "Pred prikazem IF - Rozdil je : " << rozdil << endl;
    
  if (rozdil == delta){
    cout << "PODMINKA IF SE SPLNI - Rozdil je " << rozdil << endl;
    }  
}
Nahlásit jako SPAM
IP: 90.180.63.–
KIIV
~ Moderátor
+43
God of flame
3. 4. 2013   #2
-
0
-

protoze tydle cisla nejsou uplne presny... muze ti vyjit 0.4-0.2 = 0.20000000000000000000001 a uz to neni stejny jako 0.2

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
3. 4. 2013   #3
-
0
-

obvykle se to dela tak, ze mas   delta>=rozdil   ale furt mas jeste problem pokud budes mit  a=1.9 a b=2.1 

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
3. 4. 2013   #4
-
0
-

   

if ((cislo >= 0.19) && (cislo <= 0.21))
{
  //je v intervalu, bere se jako cislo == 0.2
}

hu

....takže se při porovnání používá pásmo necitlivosti. Pokud je porovnávané číslo uvnitř intervalu, má se za to, že je rovno.

Nahlásit jako SPAM
IP: 195.178.67.–
3. 4. 2013   #5
-
0
-

#3 KIIV
jseš rychlejší

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Jonasberg
~ Anonymní uživatel
6 příspěvků
3. 4. 2013   #6
-
0
-

Díky moc.

Tak to jste mně zachránili. 

Nahlásit jako SPAM
IP: 90.180.63.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 85 hostů

Podobná vlákna

Podmínka if — založil Jan

Podmínka where — založil spartan13

Podmínka — založil Filip

Podmínka IF — založil pawlik

IF A ELSE - podmínka — založil Morello

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý