2016-06-24 2 views
0

Учитывая десятичное значение, как я могу добавить начальный ноль в строке только, когда значение меньше 1?Добавление начального нуля к значению меньше 1

Например.

.20 -> "0.20" - Add a leading 0 

1.20 -> "1.20" - Value remains the same 

значение до десятичного знака может быть любой длины, а значение после десятичной точки будут только две цифры то. валюта. Возможно ли это с помощью String.Format()? Или я должен полагаться на базовый оператор if?

Документация String.Format() довольно запутанна для меня.

Я проверил несколько других вопросов/ответов и не могу найти то, что ищу.

РЕДАКТИРОВАНИЕ: Как упоминалось в нескольких ответах, этот вид ведущего нулевого добавления должен быть по умолчанию для метода ToString(), вызываемого значением. По какой-то причине это не происходит в моем случае, поэтому String.Format() необходим в моем случае.

ответ

5

Можно с String.Format():

string.Format("{0:0.00}", 0.2) // 0.20 
string.Format("{0:0.00}", 1.20) // 1.20 

Вы также можете использовать ToString() на самих переменных:

var d1 = 0.2; 
var d2 = 1.20; 
Console.WriteLine(d1.ToString("0.00")); // 0.20 
Console.WriteLine(d2.ToString("0.00")); // 1.20 
2

Если вы используете ноль перед точкой в ​​формате строка, вы получите желаемый эффект:

string.Format("{0:0.00}", currency); 

или с помощью C# 6 синтаксиса

$"{currency:0.00}" 

Обратите внимание, что .NET также обеспечивает общий формат спецификатор для форматирования валюты, которая берет на себя лидирующий нуль, а также:

$"{currency:C}" 
2

То, что вы просите за это на самом деле поведение по умолчанию ToString() для десятичный тип. Вам не нужно String.Format().

decimal d = .20M; 
    string s = d.ToString(); 

    Console.WriteLine(s); 
+0

Не знаете, почему, но ToString() давал мне «.20», поэтому я и хотел искать другой способ. –

+0

Какой тип данных вы используете для своего номера? –

+0

Тип данных 'decimal' –

1

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

var valStrVersion = ((val < 1.0M) ? "0" + val.ToString() : val.ToString()); 

И тогда вы могли бы что угодно, что вам нужно. Преобразуйте его обратно, распечатайте, что угодно. Добавляете ли вы M к десятичному значению, когда вы его объявляете? decimal dec = 0.15M;?

Смежные вопросы