C # Double - ToString () форматирование с двумя десятичными разрядами, но без округления - PullRequest
139 голосов
/ 16 марта 2010

Как мне отформатировать Double в String в C #, чтобы иметь только два десятичных знака?

Если я использую String.Format("{0:0.00}%", myDoubleValue), то число округляется, и я хочу простое усечение без округления. Я также хочу, чтобы преобразование в String было чувствительным к культуре.

Ответы [ 15 ]

1 голос
/ 23 июня 2016

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

double value = 123.456789;
String.Format("{0:0.00}", value);
0 голосов
/ 28 декабря 2018

Также обратите внимание на CultureInformation вашей системы. Вот мое решение без округления.

В этом примере вам просто нужно определить переменную MyValue как double. В результате вы получите отформатированное значение в строковой переменной NewValue .

Примечание - также установите оператор C #, используя:

using System.Globalization;  

string MyFormat = "0";
if (MyValue.ToString (CultureInfo.InvariantCulture).Contains (CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator))
   {
      MyFormat += ".00";
   }

string NewValue = MyValue.ToString(MyFormat);
0 голосов
/ 03 декабря 2018

Решение:

var d = 0.123345678; 
var stringD = d.ToString(); 
int indexOfP = stringD.IndexOf("."); 
var result = stringD.Remove((indexOfP+1)+2);

(indexOfP + 1) +2 (это число зависит от того, сколько номеров вы хотите сохранить. Я даю это два, потому что владелец вопроса хочет.)

0 голосов
/ 13 июля 2018

У меня была проблема с ксамарином, и я решил:

porcent.ToString("0.##"+"%")
0 голосов
/ 16 марта 2010

Вы также можете написать свой собственный IFormatProvider , хотя я полагаю, что в конечном итоге вам придется подумать о способе фактического усечения.

.NET Framework также поддерживает пользовательское форматирование. Обычно это включает создание класса форматирования, который реализует IFormatProvider и ICustomFormatter . (MSDN)

По крайней мере, это будет легко использовать повторно.

В CodeProject есть статья о том, как реализовать свой собственный IFormatProvider / ICustomFormatter . В этом случае «расширение» существующего числового формата может быть лучшим выбором. Это не выглядит слишком сложно.

...