Числовые преобразования в C#



Ранее я уже писал о числовых типах, которые существуют в языке C#. Сегодня же речь пойдёт об их преобразовании.



В тот момент, когда значение одного типа (допустим int) присваивается переменной другого типа (например long), выполняется преобразование типов.



Значения значимых типов преобразуются (конвертируются) неявно (implicitly) тогда и только тогда, когда отсутствует вероятность потери точности результата (data loss). Это возможно в том случае, когда тип, к которому мы хотим преобразовать наше значение, хранится в памяти в большем или равном количестве бит, как и исходный.



🔸 implicit преобразования:



int i = 12;

long l = i; // Implicit (int to long)

float f = i; // Implicit (int to float)

double d = 4.2f; // Implicit (float to double)




Как видно из кода выше, нам не требуется никаких дополнительных действий для преобразования, ведь long и double располагаются в 64 битах, в то время как int в 32, а значит потеря точности результата нам не грозит.



🔸 explicit преобразования:



long l = 12;

int i = l; // Compiler error




Если мы захотим выполнить аналогичное преобразование в обратном направлении, то компилятор не позволит нам это сделать и сообщит об ошибке на этапе компиляции, как в примере выше.



В таком случае мы будем вынуждены производить преобразования уже явно:



int i = (int)l;   // Explicit (long to int)

float f = 4.2f;

i = (int)f; // Explicit (float to int)

double d = 4.2f;

f = (float)d; // Explicit (double to float)




💬 Позвольте познакомить вас со своим тёзкой, который также имеет богатый практический опыт в разработке программного обеспечения и преподает айтишные предметы в ВУЗе. Почитайте https://t.me/tobeITmen, чтобы узнать, каково это - быть айтишником 😉



#data_types