A floating point problémát mi okozza, hogy idézhető elő és mit lehet tenni ellene?
Tudsz angolul? Akkor az alábbi videó elég jól elmagyarázza:
https://www.youtube.com/watch?v=PZRI1IfStY0
Ha nem, akkor röviden:
Binárisban nem lehet pontosan tárolni minden számot, mert véges sok hely áll rendelkezésedre. Kiegészítő jellegű példa: az 1/3 számot sem tudod pontosan leírni tizedesszámként papírra, mert végtelen sok hármas kéne neked, amit véges sok papírra felejtős leírni. Pontosan ugyanez a helyzet a számítógépeknél is, ahol emlékeim szerint 20 tizedesjegyig tárolja a gép, ami azután jönne, az elmegy a fenébe.
Előidézés: igazából nagyon egyszerűen. Írd be a böngésződ címsorába az alábbit (Én Chrome-ot használok, de ez elég böngésző- és nyelvfüggetlen ahhoz, hogy elvileg mindenütt ugyanúgy jelentkezzen):
javascript: document.write(0.3+0.3+0.3)
Az eredmény nálam:
0.8999999999999999
Mert kerekítési hiba.
Megelőzés: Megfelelő helyen, mennyiségben kerekíteni, ügyelni a bevitt adatokra.
Nem értem továbbra sem.
A végtelenségig valóban nem tudjuk ki írni a 1/3 mert véges a memória. De ha ki tudjuk írni pl 20 karakterig akkor eddig a 20 karakterig pontos kell hogy legyen nem pedig pontatlan és ami a 20 karakter után jön az meg nem létezik ezért nem lehet hatással az első 20 karakterre.
Ezért nem értem miért dob hülye eredményt továbbra sem.
Mit nem bír a te példádon összeadni normálisan teljesen logikátlan.
"Pl számítógépben a 0,1-et se lehet eltárolni"
A végtelenségig nem lehet de mondjuk 20 karakterig igen ezért ha ezt összeadom vagy szorzom más 20 számjegyet alkotó számmal akkor 20 karakterig pontosan eredményt kell hogy adjon. Fejben is egyszerű kiszámolni akkor nem értem mi nehéz ebben a gépnek hogy pontatlanul számol.
Nagyon sza*ul lehet megvalósítva a float.
Nem értem. :(
Miért nem tudja csak úgy összeadni,ugyan úgy kell mint a nem valós számokat csak itt van egy aposztróf.
Nem a float lett szarul megvalósítva, a matekkal alapvető problémák vannak, pl az osztás többször vezet kiszámíthatatlan eredményhez mint nem, csak épp mindenki leszarja mert gyakorlati problémákhoz nem nagyon vezet - de van millió és egy másik gond vele, pl a végtelen is kizárólag azért létezik hogy leegyszerűsítsen néhány számítást, teljesen ellene megy a matematika alapvető logikájának(végtelen plusz egy nagyobb, kisebb vagy egyenlő mint végtelen?). Ha több tizedesig akarsz pontos eredményt kapni akkor ott a double, long, etc.
Viszont azzal nem fogsz sokra jutni ezen a területen hogy megkérdőjelezel valamit amit láthatóan nem értesz, aztán lerendezed azzal hogy "mindegy leszarom, hülyeség az egész".
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!