При переходе от двойного к десятичному, предполагая, что мой double
может быть представлен в виде десятичного числа
...
Более подходящим является приведение двойного в виде десятичного числа:
( Таблица явных числовых преобразований ) (Обратите внимание, что эта запись ошибочно противоречит предыдущему!)
double foo = bar;
decimal foobar = (decimal)foo;
Или более уместно назвать десятичным
конструктор:
( Decimal Constructor )
double foo = bar;
decimal foobar = new decimal(foo);
Я предпочитаю использовать decimal
конструктор, но мне интересно, зачем использовать один вместо другого .
Насколько я могу судить, единственное отличие состоит в том, что явное приведение двойного значения ниже Decimal.MinValue
возвращает ноль, а использование конструктора вызывает исключение OverflowException
EDIT: ] @Joren в комментариях ниже отмечает, что приведение выдает исключение OverflowException
и для небольших значений ... так что очевидно, что документация MSDN неверна.
Связанные вопросы:
- C # преобразовывает двойную переменную в десятичное
- Безопасное автоматическое преобразование из двойного в десятичное: безопасно ли следующее?