Приведите двойную переменную к десятичной - PullRequest
66 голосов
/ 15 мая 2011

Некоторым это покажется глупым вопросом, но мне нужно привести значение типа double к десятичному числу, чтобы использовать его в качестве валюты.Куда девается М?

decimal dtot = (decimal)(doubleTotal);

Ответы [ 4 ]

59 голосов
/ 15 мая 2011

Вы используете M только для числового литерала, когда вы разыгрываете его просто:

decimal dtot = (decimal)doubleTotal;

Обратите внимание, что число с плавающей запятой не подходит для сохранения точного значения, поэтому если вы сначала добавитечисла вместе, а затем преобразовать в Decimal вы можете получить ошибки округления.Вы можете преобразовать числа в Decimal, прежде чем сложить их вместе, или убедиться, что числа не являются числами с плавающей запятой.

27 голосов
/ 15 мая 2011

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

double dbl = 1.2345D;
decimal dec = (decimal) dbl;

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

decimal dec = 123.45M;

(Без M 123.45 считается двойным и не компилируется.)

23 голосов
/ 15 мая 2011

использовать класс преобразования по умолчанию: Convert.ToDecimal(Double)

14 голосов
/ 15 мая 2011
Convert.ToDecimal(the double you are trying to convert);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...