Кастинг из десятичного числа в число с плавающей точкой - PullRequest
4 голосов
/ 22 апреля 2011

Я делаю немного математических расчетов.Вот мой код:

   decimal FirstYr = decimal.Round((first / second), 5);

Если я передаю first = 20 и second = 34, я получаю значение 0.58824 в FirstYr .Что хорошо.Теперь я делаю этот расчет здесь, в моем LINQ :

   ev.HiComm = (float)(FirstYr * 100);

HiComm , плавающем в DB , и данный выше расчет проходитзначение: 58.824001312255859

Что я не хочу.Я хочу в своем ev.HiComm = 58.824

Что я здесь не так делаю?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2011

Если вы хотите ровно 3 места после точки, вам нужно изменить поле sql на decimal(x,3), где x равно 3 плюс максимальное количество мест, которое вам нужно до десятичного знака. float неспособен хранить точное значение, которое вы хотите.

0 голосов
/ 22 апреля 2011

Это работает так в коде:

 decimal FirstYr = decimal.Round((first / second), 5)*100;
 ev.HiComm = (double)FirstYr ;

Спасибо за все ваши предложения!

...