Вопрос по c# – Два десятичных знака с использованием c #

49
decimal Debitvalue = 1156.547m;

decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:0.00}", Debitvalue));

Мне нужно получить только два десятичных знака, но с помощью этого кода я получаю 1156,547. Дайте мне знать, какой формат мне нужно использовать для отображения двух десятичных знаков.

Math.Round будет работать, и даже ваш код будет работать. Я проверил с вашим кодом, и он работал нормально десятичное Debitvalue = Convert.ToDecimal ("1156.547"); десятичное DEBITAMT = Convert.ToDecimal (string.Format ("{0: 0.00}", Дебитное значение)); Console.WriteLine (DEBITAMT); Anand

Ваш Ответ

10   ответов
31

Math.Round()

почему бы не это Convert.ToDecimal (string.Format ("{0: F2}", Debitvalue)) ;, когда мы уже используем convert.todecimal в коде. Dragon
@ Dragon - потому что преобразование числа в строку и обратно в число - это запах кода. cjk
ooh kk..то тогда я буду использовать вот так Math.round (Convert.todecimal (val), 2) .. Dragon
48

ющего String.format поможет:

String.Format("{0:.##}", Debitvalue)

это покажет число только с двумя десятичными разрядами.

Или, если вы хотите, чтобы отображался символ валюты, используйте следующее:

String.Format("{0:C}", Debitvalue)
На самом деле формат в первом из них будет "{0: .00}", если он хочет показать 2.10. С ## было бы 2.1. SvendK
этот действительно не работает. округляется с 4.998 до 5, но OP хочет иметь 2 десятичных знака как 4.99 batmaci
43

ИспользуйтеMath.Round() для округления до двух десятичных знаков

decimal DEBITAMT = Math.Round(1156.547m, 2);
19

Я использу

decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:F2}", Debitvalue));
15

есть другой подход

decimal decimalRounded = Decimal.Parse(Debitvalue.ToString("0.00"));
13

если вы хотите ВСЕГДА показывать два десятичных знака (даже если ваш номер имеет только один десятичный знак), является использование

yournumber.ToString("0.00");
9

Только для отображения, свойствоString можно использовать следующим образом ..

double value = 123.456789;
String.Format("{0:0.00}", value);

С помощьюSystem.Math.Round. Это значение может быть присвоено другим или изменено как требуется ..

double value = 123.456789;
System.Math.Round(value, 2);
3

decimal.Round (десятичное значение, 2, MidpointRounding.AwayFromZero);

2
2

это вариант других примеров, но я использую этот метод, чтобы убедиться, что перед десятичными знаками стоит точка, а не запятая:

someValue.ToString ("0,00", CultureInfo.InvariantCulture)

Похожие вопросы