Hogyan lehet megtudni, hogy egy szám egész szám-e? (c++)
Azt gondoltam, hogy attól lesz valami egész, ha 1-el osztva maradékot ad.
Nem jó próbálkozások:
(az i természetesen double tipusú)
1:
(i%1.00)==0
2:
(i%1.0)==0
3:
i%1==0
Itt van a példa:
double param, fractpart, intpart;
param = 3.14159265;
fractpart = modf (param , &intpart);
//ellenőrzöd a fractpart-ot, hogy 0-e, vagy az intpart(egészrész) egyezik-e a param-al
if(fractpart==0.0) {
...
}
bool Egesz = abs(i - (int)i) < epsilon;
Ahol az "epsilon" egy nagyon kis szám (kiszedheted a numeric_limits-ből, vagy egyszerűen odaraksz valami kis számot, pl 10e-6)
Az első hozzászólás nem teljesen jó
if(fractpart==0.0)
- mivel "fractpart" is double, ez nem feltétlenül működik
Ha így akarod, akkor valami ilyen kell:
if(abs(fractpart) < epsilon)
Ahol epsilon egy kis szám.
összefoglalva: float és double esetén egyenlőséget nem ==-vel tesztelünk, hanem úgy, hogy a különbség egy adott (nagyon kis) érték alatt van.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!