C# 如何使用String.Format仅显示美分而忽略美元

C# 如何使用String.Format仅显示美分而忽略美元,c#,wpf,decimal,C#,Wpf,Decimal,我只想显示十分之一的小数 decimal d = 44.22m; var s = d.ToString(""); 如何使这个s==“22”为真 PS:我很清楚我可以做一些计算,但我想只使用绑定和StringFormat在WPF中显示十分之一,这不是最好的,但它可以工作: decimal d = 44.22m; string ds = d.ToString().Remove(0, (d.ToString().IndexOf(',') + 1)); 如果您需要大

我只想显示十分之一的小数

decimal d = 44.22m;

var s = d.ToString("");
如何使这个
s==“22”
为真


PS:我很清楚我可以做一些计算,但我想只使用绑定和
StringFormat
在WPF中显示十分之一,这不是最好的,但它可以工作:

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

如果您需要大量操作,可以为此步骤设置一个函数!?我想只使用
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();

这里有一个类似问题的答案

由用户发布

原邮政编码:

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);
--输入样本--
1) 46.0
2) 46.01
3) 46.000001
4) 46.1 5) 46.12
6) 46.123
7) 46.1234

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


使用转换器可以吗?我真的不想把事情复杂化,但如果没有可用的StringFormat,我会使用转换器。我不认为你得到的答案不需要使用数学,只需要
String.Format
ToString
。顺便说一句,如果您使用像“如何使用String.Format仅显示美分而忽略美元”这样的标题,那么这个问题将更容易理解converter@TimSchmelter:我也不认为有一种纯粹的-String.Format-way来获取美分。
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);