Десятичный тип данных удаляет конечные нули, когда они необходимы для отображения
Веб-приложение, которое ям работает (другой разработчик написал это) имеет десятичную переменную, которая сбрасывает два нуля 'с после десятичного. Он не сбрасывает последние 2 цифры, если они содержат число> 0 или комбинация. Значение исходит из текстового файла.
Пример текстового значения:261.00
Пример десятичной переменной (TotalDue):261
Во время отладки, когда я наведите курсор на "TotalDue» (в приведенном ниже примере кода) значение отображается как 261, и когда я раскрываю отладчик, он читает "261m ":
decimal TotalDue = Convert.ToDecimal(InputRow.Substring(260, 12));
Я попытался ввести его в виде строки (но изначально он все еще читается как "261" вместо 261,00), а затем преобразовать его различными способами следующим образом. Ничего не работает!
string TotalDue = InputRow.Substring(260, 12);
strTotalDue = String.Format("{0:F2}", TotalDue);
strTotalDue = String.Format("{0:N2}", TotalDue);
strTotalDue = String.Format(TotalDue, "0.00");
strTotalDue = TotalDue.ToString("G29");
strTotalDue = String.Format("{0:0.00}", TotalDue);
strTotalDue = TotalDue.ToString("N2");//used this one with decimal data type
Что мне не хватает? Имеет ли значение, откуда берутся данные текстового файла? Это началось в базе данных Access.
ОБНОВИТЬ: Сегодня (1/15/15) я понял, что никогда не отмечал ответ, потому что в итоге я отказался от исходного кода и переписал его в C # .net. Я отмечу Коул Кэмпбеллответ правильный, потому что его замечания ("создайте десятичное число таким образом, чтобы обеспечить его достаточными данными относительно точности ввода. ") это то, что побудило меня придумать решение, которое я сделал, чтобы манипулировать поступающими данными. Я сделал это в методе - показ только части, которая имеет значение (AmtDue) ниже. Напоминание о поступивших данных было в формате "261,00" (например, AmtDue = 261,00):
string AmtDue = Convert.ToString(AmountDue).Replace(".", "");
string finalstring = ("0000000000" + AmtDue).Substring(AmtDue.Length);