Miért veszítek adatot a castolásnál?
Kezdő vagyok eléggé (C++), valaki el tudná magyarázni hogy ez:
(int)(log(8-0)/log(2))
miért lesz a számítógépem szerint kettő?





A lebegőpontos számábrázolás nem pontos.
Ha lebegőpontosból egészet akarsz csinálni, akkor kerekíteni akarsz, nem csonkolni. Ezt úgy teheted meg pl, hogy hozzáadsz 0.5-t egésszé alakítás előtt.





Az (int) castolás levágja a maradékot, nem kerekiti. 2,2 vagy 2,8 mindegy neki, 2 lesz belőlük, a maradék megy a levesbe.
Próbáld igy:
round(log(8)/log(2). a round() függvény a <cmath> headerben található. De te magad is irhatsz egy egyszerű egésszé kerekitő függvényt:
A számból kivonod az (int) castolt változatát a számnak, igy megkapod a maradékot. Ha az kisebb, mint 0.5, akkor az (int) castolt változatot adod visszatérési értékként, ha nem, akkor az (int) castolt változat+1-et.










Igaz, ezt benéztem.
Kicsit utánajártam, az előző kettő metódushoz (+0.5 a számhoz castolás előtt, illetve a maradékvizsgálatos) még hozzátennék annyit, hogy egyik sem működik csak igy magában negativ számra. Viszonylag könnyű módositani mindkettőt, hogy azokkal is a várt eredményt hozza.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!