如何使用String.Format只显示美分并省略美元

时间:2014-10-24 09:21:45

标签: c# wpf decimal

我想只显示十进制的十分之一。

decimal d = 44.22m;

var s = d.ToString("");

如何使s == "22"成立?

PS:我很清楚我可以做一些数学运算,但我想只使用Binding和StringFormat

在WPF中显示十分之一

4 个答案:

答案 0 :(得分:0)

这不是最好的,但它有效:

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

答案 1 :(得分:0)

decimal d = 44.22m;

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

答案 2 :(得分: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();

答案 3 :(得分:0)

这里有类似问题的答案。

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

由用户发布 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);
  

- 输入样本 -
  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