2010-11-23 4 views
3

Можно создать дубликат:
c# - How do I round a decimal value to 2 decimal places (for output on a page)Как правильно округлить и отформатировать десятичное число?

Я пытаюсь получить мои десятичные для отображения четырех знаков после запятой. DB округляет мой номер до 4 знаков после запятой, но возвращает число с завершающим 0s (из-за десятичной точности поля), что-то вроде 9.45670000. Тогда, когда я делаю это:

string.Format("{0:#,#.####}", decimalValue); 

Выход я получаю на странице 9,4567, который является то, что я хочу.

Однако, если число возвращается из БД 9,45600000, выход после выполнения формат является 9,456

Но что мне нужно, чтобы отобразить это 9,4560

Как отформатировать десятичной, так что число из десятичных знаков всегда четыре?

UPDATE: Возможно ли использовать переменную (вместо .0000), если бы я хотел, чтобы число десятичных знаков определялось динамически?

ответ

13
string.Format("{0:N4}",decimalValue); 

Standard Numeric Format Strings

Custom Numeric Format Strings

Чтобы установить точность динамически вы можете сделать следующее:

double value = 9.4560000; 
int precision = 4; 
string format = String.Format("{{0:N{0}}}",precision); 
string valuestring = String.Format(format, value); 
+2

Основываясь на комментариях ниже, запятые тоже важны вы. Эта строка формата добавляет их правильно. Кроме того, я отредактировал свой ответ, чтобы предоставить ссылку на стандартные строки числового формата для дальнейшего использования. – theChrisKent 2010-11-23 17:52:11

1

Использование String.Format -

decimal d =123.47 
    string specifier="{0:0,0.0000}"; // You need to get specifier dynamically here.. 
    String.Format(specifier, d);  // "123.4700" 
+0

Мне нужны запятые для больших чисел, хотя ... – Prabhu 2010-11-23 17:38:00

+1

обновленный ответ. – Vishal 2010-11-23 17:43:16

1

Попробуйте это:

string.Format("{0:#,###.0000}", 9.45600000); 

Добавление нулей в формате заставляет ноль, который будет выводиться, если не является цифрой поставить там.

Чтобы добавить нули с числом нулей ведомых программно вы можете сделать это:

int x = 5; 
    string fmt = "{0:#,###." + new string('0', x) + "}"; 
    string.Format(fmt, 9.456000000);