C-ben hogyan lehet eldönteni egy változó értékéről, hogy egész-e?
Értelmetlen a kérdés.
Egy string tipusú változó például mikor nem 'egész'?
#1 Jöttem kötekedni :)
Nem túl jó ötlet lebegőpontos számokra használni a == operátort. Adni kell neki egy tűrést különben nem fog megbízhatóan működni!
A másik fele pedig inline függvényt így nem használunk C-ben mert bizonyos körülmények között nem generál a fordító hozzá szimbólumot és a linker problémázni fog érte. Gcc-vel le se fordul így nekem.
Én valami ilyesmit írnék:
bool egesz(double d) {
return fabs((roundf(d) - d) / d) < 1.0e-7;
}
A d-vel való osztás elhagyható ha számít a sebesség, de így lenormáljuk a hibát és a küszöböt ehhez képest tudjuk állítani. Ez akkor számít ha nagyságrendileg nagyon különböző értékekkel dolgozunk.
Példának forkoltam #1-es kódját:
Azt írja ki: "1.000000 : nem egesz"
"Nem túl jó ötlet lebegőpontos számokra használni a == operátort."
Nem nem túl jó ötlet, hanem konkrétan rossz.
Aki ilyet használ, az inkább ne adjon semmilyen tanácsot programozás témakörben.
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!