Kezdőoldal » Számítástechnika » Programozás » A floating point problémát mi...

A floating point problémát mi okozza, hogy idézhető elő és mit lehet tenni ellene?

Figyelt kérdés
2017. júl. 19. 18:59
1 2 3
 1/23 anonim ***** válasza:
0%
Mi az?
2017. júl. 19. 19:35
Hasznos számodra ez a válasz?
 2/23 anonim ***** válasza:

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.

2017. júl. 19. 19:40
Hasznos számodra ez a válasz?
 3/23 anonim ***** válasza:
Ugyanazt a videót akartam linkelni mint #2
2017. júl. 19. 19:58
Hasznos számodra ez a válasz?
 4/23 anonim ***** válasza:
Pl számítógépben a 0,1-et se lehet eltárolni
2017. júl. 19. 23:21
Hasznos számodra ez a válasz?
 5/23 A kérdező kommentje:

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.

2017. júl. 19. 23:28
 6/23 A kérdező kommentje:

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

2017. júl. 19. 23:31
 7/23 anonim ***** válasza:
100%
2017. júl. 19. 23:37
Hasznos számodra ez a válasz?
 8/23 A kérdező kommentje:

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.

2017. júl. 20. 00:00
 9/23 A kérdező kommentje:
mind1 lesz/arom elég ha tudom hogy kerekítési hibák vannak amikkel számolni kell mert összeadódnak aztán problémázhatnak.
2017. júl. 20. 00:09
 10/23 anonim ***** válasza:
87%

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

2017. júl. 20. 03:17
Hasznos számodra ez a válasz?
1 2 3

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!