Что лучше: преобразовать double как десятичное или построить «новое» десятичное число из double?

При переходе от двойного к десятичному, предполагая, что мой 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 # преобразовывает двойную переменную в десятичное
- Безопасное автоматическое преобразование из двойного в десятичное: безопасно ли следующее?

27
задан Community 23 May 2017 в 11:45
поделиться