- Azonnali alaplapos kérdések órája
- Asztrofotózás
- Melyik tápegységet vegyem?
- Vezetékes FEJhallgatók
- Párduc a gépben: teszten az ASUS ExpertBook Ultra
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Apple MacBook
- Milyen HASZNÁLT notebookot vegyek?
- Plazma TV topic
-
PROHARDVER!

Új hozzászólás Aktív témák
-
válasz
HussarF
#13235
üzenetére
"de miért csinálja azt, hogy float esetén kiegészíti a számot még random, kisebb helyi értékű számjegyekkel, hogy meglegyen a 10 számjegy?"
Ez egy nagyon fontos kérdés a lebegőpontos számoknál!
Mivel a lebegőpontos számok is binárisak, ezért egy csomó szám, ami tizes számrendszerben véges számú számjeggyel leírható, az (kettesre váltva) végtelen tizedes tört lesz. Például a tök egyszerűnek tűnő "0.1" 32 bites floatkén már "0.100000001490116119384765625" (itt van egy online tool, amivel nézhetsz még példákat). Természetesen double esetén is létezik ugyanez a probléma, csak a tíz tizedesre kerekítés ott már elrejtette ezt (mert a hiba kisebb volt a kerekítés értékénél), de egy precision(30) már biztos előhozná.
Ezért (meg a lebegőpontos számítások eredő pontatlansága miatt*) van az, hogy lebegőpontos számoknál gyakorlatilag tilos ==-t használni, szimpla egyenlőségvizsgálat helyett azt kell megnézni, hogy elég közel vannak-e egymáshoz (ahol az "elég közel" az sajnos mindig kontextusfüggő, tudni kell, hogy milyen mértékű hibára kell ott számítanod).
*: a pontatlanságra példa
if ( (b > 0) && (a+b == a) ) printf("oops\n");Ez simán kiírhatja azt, hogy oops (annak ellenére, hogy tisztán matematika alapon nem lenne neki szabad), pl:
a=10000000.0;
b=00000000.1;
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Milyen autót vegyek?
- Azonnali alaplapos kérdések órája
- exHWSW - Értünk mindenhez IS
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Diablo IV
- Asztrofotózás
- Kész rémálom lesz Linuxot használni jövőre az USA egyes államaiban
- Kerékpárosok, bringások ide!
- További aktív témák...
- Akció!!! Sosemhasznált! HP OmniBook 5 Ultra 7 255U 5.2GHz 16GB 1000GB 16" FHD+ Gar.: 1 év
- iKing.Hu - Apple iPhone 13 Pro Max Graphite ProMotion 120 Hz, Pro kamerák 256 GB-100%-3 hó gari!
- ÁRGARANCIA!Épített KomPhone i5 14600KF 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- GYÖNYÖRŰ iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3972
- Fujitsu LIFEBOOK E449 i3-8130U 12GB 512GB 14" FHD 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


