Безопасное, но не безопасное приведение int в float

Рейтинг: 0Ответов: 0Опубликовано: 20.03.2023

Приведение int к float проходит неявно, а раз неявно значит безопасно, но так говорится в книгах и различных видео.

Заминка у меня случилась когда выполнил это:

float a = int.MaxValue; // 2_147_483_647
Console.WriteLine(a);   // Вывод: 2,1474836E+09

Решил в цикле перебрать и оказалось что со значения 16777217 приведение не безопасно.

int a = 16777217;
float b = a;
Console.WriteLine(b); // Вывод 16777216

Понимаю например почему byte в short, int, long совершено безопасно проходит:

byte a = 255;   //                                                                                       1111 1111
short b = a;    //                                                                           0000 0000   1111 1111
int c = a;      //                                                  0000 0000    0000 0000   0000 0000   1111 1111
long d = a;     // 0000 0000    0000 0000   0000 0000   0000 0000   0000 0000    0000 0000   0000 0000   1111 1111

Почему int во float не требует явного приведения ?

Ответы

Ответов пока нет.