Tumgik
#да что происходит с покрасом текста
mumblingstudent · 3 months
Text
Преобразование типов?
С расширяющим преобразованием всё понятно: маленькое кладем в большое и никаких фокусов. А вот с сужающим?
Во-первых, надо явно указать в какой тип идёт преобразование:
int i = 35; byte b = (byte) i;
При попытке положить большой int в маленький byte происходит следующее:
Если число входит в диапазон byte, оно записывается как есть.
Если не входит, то число уменьшается по модулю* на ширину диапазона byte. Пример:
int i = 600; byte b = (byte) i; System.out.println(b); //Вывод: 88
А при преобразовании вещественных чисел в целочисленные, дробная часть отсекается. Такой тип преобразования называется усечение:
6.12 -> 6
*уменьшение по модулю происходит согласно этому алгоритму (для преобразования в byte):
int num = 512; //Преобразуемое число num %= 256; //Деление по модулю на диапазон byte if (num > 127) { num -= 256; } System.out.println(num);
2 notes · View notes