liczba typu float - wytłumaczenie

0

Hej, liczbe float 0.1 mozna zapisac w pamieci jako:
0|01111011|10011001100110011001101
Ale czy ktoś może mi wytłumaczyć dlaczego tak to zapisujemy?

1

Bo mieliśmy problem: "ile bitów dać na cyfry przed przecinkiem a ile na po przecinku?" I powstał standard IEE754 który to rozwiązuję. W JS'ie zdaje się nawet liczby całkowite są zapisane w tym standardzie.

0

Długi zapis liczby 0.1 w postaci binarnej jako float wiąże się z tym, że 1/10 nie jest potęgą dwójki. Np. 0.25 to 0.01 binarnie, bo to 0 całych i 0 1/2 i 1 1/4

0.1 zaś nie da się zapisać dokładnie, nawet z nieskończonym przybliżeniem, więc jak napiszesz program:

for (float i = 0; i < 1000000.0; i += 0.1)
   cout << i << endl; 

to w pewnym momencie dostaniesz coś, co nie będzie wielokrotnością 0.1

0

W takich tematach polecam książeczkę:
https://ksiegarnia.pwn.pl/Zrozumiec-programowanie,688790689,p.html

0

dzięki, a ta wartość ostatniego bitu dlaczego akurat wynosi 1 ?

1

1 użytkowników online, w tym zalogowanych: 0, gości: 1