Czy można konwertować int na float bez żadnych konsekwencji ?
0
5
Nie, z reguły sizeof(int) == sizeof(float)
, co oznacza, że float
ma mniejszą precyzję. Np. na moim systemie float ma 23 bity mantysy:
<@KrzaQ> { int a = (1 << 25) + 1; float b = a; cout << fixed << a, b; }
<+cxx> 33554433, 33554432.000000
0
Nie rozumiem, kiedy rzutuję na swoich komputerze z int na float to nic się nie zmienia.
1
Jeśli nie wychodzisz poza precyzję float
to się nie zmienia.
0
A kiedy mogę wyjść poza precyzję?
3
Kiedy masz więcej bitów znaczących niż ma mantysa twojego floata. Tak jak pokazałem to na przykładzie.
0
A czym są te bity znaczące?
1
To binarne cyfry znaczące liczby, którą chcesz reprezentować.
0
Czyli mantysa?
2
Chyba się nie rozumiemy. Mantysa musi mieć więcej lub tyle samo bitów co liczba, którą chcesz reprezentować, a więc liczba, którą chcesz reprezentować nie może mieć więcej bitów znaczących niż mantysa floata.