2014-10-24 2 views
-1

Я хочу отображать только десятые десятичные числа.Как использовать String.Format, чтобы показывать только центы и опускать доллары

decimal d = 44.22m; 

var s = d.ToString(""); 

Как это сделать s == "22" true?

PS: Я хорошо знаю, что я могу сделать некоторые математику, но я хочу, чтобы отобразить десятые в WPF, используя только Binding и StringFormat

+2

Было бы хорошо, чтобы использовать конвертер? – nvoigt

+0

Я действительно не хотел усложнять вещи, но если нет доступных StringFormat, я буду использовать конвертер –

+3

. Я не думаю, что вы получите ответ, который не должен использовать математику и нужен только 'String.Format' или' ToString'. Кстати, вопрос будет легче понять, если бы вы использовали заголовок наподобие _ «Как использовать String.Format, чтобы показывать только центы и опускать доллары» _ –

ответ

0

Это не самый лучший, но это работает:

 decimal d = 44.22m; 
     string ds = d.ToString().Remove(0, (d.ToString().IndexOf(',') + 1)); 
0
decimal d = 44.22m; 

Regex regex = new Regex(@"\d*(?=m)"); 
Match match = regex.Match(d); 
if (match.Success) 
{ 
     Console.WriteLine(match.Value); 
} 
0

Если вам нужно много операций, возможно, настроена функция для этого шага !? Я думаю, использование String.Format только не работает.

int getDecimals (decimal d) 
{ 
    try 
    { 
     int s = Convert.ToInt32(string.Format("{0}", d.ToString().Split('.')[1])); 
     return s; 
    } 
    catch { //whatever u want// } 
} 

// ==> // 

decimal d = 44.22m; 

string s = getDecimals(d).ToString(); 
0

Ответ на этот вопрос можно найти здесь.

https://stackoverflow.com/a/19374418/41

отправленный пользователем https://stackoverflow.com/users/2608383/karthik-krishna-baiju

Оригинальное сообщение Код:

string outPut = "0"; 
if (MyValue.ToString().Split('.').Length == 2) 
{ 
outPut = MyValue.ToString().Split('.')[1].Substring(0, MyValue.ToString().Split('.')[1].Length); 
} 
Console.WriteLine(outPut); 

Модифицированный вашим требованиям:

decimal d = 44.22m; 
string outPut = "0"; 
if (d.ToString().Split('.').Length == 2) 
{ 
    outPut = d.ToString().Split('.')[1].Substring(0, d.ToString().Split('.')[1].Length); 
} 
Console.WriteLine(outPut); 

--input samples--
1) 46,0
2) 46,01
3) 46,000001
4) 46,1 5) 46,12
6) 46,123
7) 46,1234

--outputs--
1) 0
2) 01
3) 000001
4) 1
5) 12
6) 123
7) 1234

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