Преобразования из double к float.
Пример.
Пример использования оператора unchecked.
Операторы checked и unchecked
Результат
Операторы checked и unchecked используются для управления контекстом проверки переполнения для арифметических операций и преобразований целого типа.
выражение_checked:
checked ( выражение )
выражение_unchecked:
unchecked ( выражение )
Оператор checked вычисляет содержащееся в нем выражение в проверяемом контексте.
Оператор unchecked — в непроверяемом. Используется для подавления проверки переполнения при выполнении арифметических операций и преобразований с данными целого типа. В непроверяемом контексте арифметическое переполнение будет проигнорировано, а результат усечен.
В контексте checked для неконстантных выражений (выражений, которые вычисляются во время выполнения), возникает исключение System.OverflowException.
Явное преобразование из int к short, где
short | От -32 768 до 32 767 | 16-разрядное целое число со знаком | System.Int16 |
int | От -2 147 483 648 до 2 147 483 647 | 32-разрядное целое число со знаком | System.Int32 |
int i = 2147483647;
short ixx = unchecked((short)i);
Примериспользования оператора checked.
Для неконстантных выражений (выражений, которые вычисляются во время выполнения), не заключенных в операторы или инструкции checked или unchecked, контекстом проверки переполнения по умолчанию является unchecked, если внешние факторы (например, переключатели компилятора и конфигурация среды исполнения) не заставляют установить контекст checked.
Пример.
int i = 2147483647;
short ixx = (short)i;
Если размер исходного типа превышает размер конечного, дополнительные самые старшие разряды исходного значения отбрасываются.
Если размер исходного типа меньше размера конечного, размер исходного значения расширяется до размера конечного типа за счет добавления знака или нулей.
Для преобразований из типа decimal к целому типу исходное значение округляется в сторону нуля до ближайшего целого значения. Результатом преобразования является полученное целое значение.
Пример.
decimal d = 10000.5m;
int i =(int)d;
Console.WriteLine(i);
Для типов с плавающей запятой и типа decimal отсутствует неявное преобразование, поэтому для преобразования между этими двумя типами следует использовать приведение. Пример.
decimal myMoney = 99.9m;
double x = (double)myMoney;
Console.WriteLine(x);
Если убрать оператор явного преобразования, то программа завершится с ошибкой
Ошибка 1 Не удается неявно преобразовать тип "decimal" в "double". Существует явное преобразование (возможно, пропущено приведение типов)
Значение типа double округляется до ближайшего значения типа float. При переполнении арифметической операции или делении на ноль исключение никогда не вызывается, потому что типы чисел с плавающей запятой основаны на стандарте IEEE 754 и включают правила для представления бесконечности и нечисловых значений (NaN).