Если вы конвертируете из double
в decimal
, вы можете потерять информацию - число может быть полностью вне диапазона, так как диапазон double
намного больше диапазона decimal
.
Если вы преобразуете из decimal
в double
, вы можете потерять информацию - например, 0.1 точно представимо в decimal
, но не в double
, а decimal
на самом деле использует гораздо больше битов для точности чем double
делает.
Неявные преобразования не должны терять информацию (преобразование из long
в double
может, но это другой аргумент). Если вы собираетесь потерять информацию, вы должны сообщить компилятору, что вам это известно, с помощью явного приведения.
Вот почему в любом случае нет неявных преобразований.