Kezdőoldal » Számítástechnika » Programozás » C-ben hogyan lehet eldönteni...

C-ben hogyan lehet eldönteni egy változó értékéről, hogy egész-e?

Figyelt kérdés

2016. márc. 5. 18:12
 1/5 uno20001 ***** válasza:
Pl.: [link]
2016. márc. 5. 18:25
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

Értelmetlen a kérdés.

Egy string tipusú változó például mikor nem 'egész'?

2016. márc. 5. 18:26
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:
Alaptípusú változókra gondoltam (float, double).
2016. márc. 5. 18:48
 4/5 anonim ***** válasza:

#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.


[link]


É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:

[link]


Azt írja ki: "1.000000 : nem egesz"

2016. márc. 5. 20:00
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
100%

"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.

2016. márc. 5. 20:11
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!