Форматирование числа с плавающей точкой до 2 десятичных знаков - PullRequest
192 голосов
/ 15 июня 2011

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

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

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),

Может кто-нибудь показать мне, как форматировать вывод в 2 знака после запятой ?? Большое спасибо!

Ответы [ 6 ]

435 голосов
/ 15 июня 2011

Вы можете передать формат в метод ToString, например:

myFloatVariable.ToString("0.00"); //2dp Number

myFloatVariable.ToString("n2"); // 2dp Number

myFloatVariable.ToString("c2"); // 2dp currency

Стандартные строки формата чисел

43 голосов
/ 15 июня 2011

Первое, что вам нужно сделать, это использовать тип decimal вместо float для цен. Использование float абсолютно неприемлемо для этого, поскольку оно не может точно представлять большинство десятичных дробей.

Как только вы это сделаете, Decimal.Round() можно использовать для округления до 2 мест.

36 голосов
/ 15 июня 2011

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

Более сложный пример из Форматирование строки в C # :

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

Это выведет «1240,00 долларов США, если пройдено 1243,50.Он выведет тот же формат, но в скобках, если число отрицательное, и выведет строку «Ноль», если число ноль.

22 голосов
/ 15 июня 2011

Я считаю:

String.Format ("{0: 0.00}", продажа);

Должен это сделать.Ссылка Примеры форматов строк C #

4 голосов
/ 15 июня 2011
string outString= number.ToString("####0.00");
3 голосов
/ 09 июля 2018

Как уже упоминалось, вам нужно будет использовать форматированный результат; что все делается с помощью методов Write(), WriteLine(), Format() и ToString().

То, что не было упомянуто, это Формат с фиксированной точкой , который допускает указанное количество десятичных знаков. Он использует «F», а число после «F» - это количество выводимых десятичных разрядов, как показано в примерах.

Console.WriteLine("{0:F2}", 12);    // 12.00 - two decimal places
Console.WriteLine("{0:F0}", 12.3);  // 12 - ommiting fractions
...