2016-04-19 2 views
-3

Im, используя приведенный ниже код, чтобы округлить десятичную до десяти знаков после запятой.Округление и форматирование десятичной точки с нулевым значением в C#

decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0; 

Но преобразование числовых 512-> 512.00 не работает. Как я это делаю?

+1

«512-> 512.00 не работает» Что это значит? Что вы получаете как результат? – HimBromBeere

+0

Вы хотите напечатать его как 512.00? Если да, взгляните на http://www.dotnetperls.com/format – Carra

+0

Округление и форматирование - это разные шаги. При округлении от 512 до 2 десятичных знаков он остается 512, однако вы хотите ** распечатать ** форматированное значение для 512. Кроме того, вы не можете объявить 'RTim' и использовать его значение в том же самом выражении. Может быть, вы что-то вроде десятичного? rtime = RTime.HasValue? Decimal.Round (RTime.Value, 2): 0; '(обратите внимание на случай' rtime'). В этом случае 'rtime' не обязательно должен быть' Nullable', а простой 'decimal'. – HimBromBeere

ответ

2

Decimal.Roundраундов значение десятичной дроби. Например, 512.123 - 512.12.

Что вы хотите представить в виде строки . Вам необходимо указать формат значение вместо округление. Вы можете использовать ToString() для этого:

decimal? RTime = RTime.HasValue ? Decimal.Round(RTime.Value, 2) : 0; 
string RTimeAsString = RTime.Value.ToString("0.00"); 

или string.Format или строка интерполяции, как это:

string RTimeAsString = string.Format("{0:0.00}", RTime); 
string RTimeAsString = $"{RTime:0.00}" 
2

Я думаю, что вы путаете округление и форматирование.

  • Что вы делаете, это округление, и оно работает.
  • Что вы ожидаете от форматирования, т.е. как он отображается на экране. Для этого вы должны использовать метод .ToString() с соответствующим форматом.
Смежные вопросы