Как отобразить конечные нули?

#c# #double #decimal

Вопрос:

Как мне сохранить конечные нули, как в примере ниже. Когда я ввожу-.230 без начальных нулей, он отображает только -0.23 без конечного нуля. Но когда я ввожу -0.230, это дает ожидаемый результат -0.230.

 Actual output: -.230 -> -0.23
Expected output: -.230 -> -0.230
 

Я тоже пробовал String.Format("{0:0.000}", n) , но это все равно не работает.

Ответ №1:

Похоже, вы переходите на string , так что вы можете использовать следующее

 someNumber.ToString("N3");
 

Смотрите документы MSDN для получения подробной информации о том, как это работает, примерно в середине страницы также приведены примеры множества различных кодов.

Ответ №2:

Похоже, что вы печатаете тот же номер, на котором вы выполнили string.format.

Попробуйте сохранить выходные данные string.format и использовать их. Я использовал тот же подход, что и вы, и получил ожидаемый ответ. Обратитесь к следующему коду

 var n = -.23;
string str = string.Format("{0:0.000}", n);
Console.WriteLine(str); // This will give you an expected output

Console.WriteLine(n); // This won't give you an expected output
 

Ответ №3:

double и decimal упомянутые в вопросе, являются совершенно разными типами. double это двоичное значение с плавающей запятой, и оно не содержит завершающих нулей:

  double value = -0.230;

 Console.Write(value); // -0.23
 

В отличие double от того , decimal что десятичная система с плавающей запятой сохраняет конечные нули:

  decimal value = -0.230m; // note suffix "m" 

 Console.Write(value); // -0.230 
 

При представлении в виде string значений этих типов они могут быть отформатированы, например, с F3
строка формата, которая обозначает «3 цифры после десятичной точки»:

   double v1  = -0.230;
  decimal v2 = -0.230m;

  Console.Write($"{v1:f3} {v2:f3}"); 
 

Исход:

   -0.230 -0.230