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?
0
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