Konwersja z int na float

0

Czy można konwertować int na float bez żadnych konsekwencji ?

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.

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