c#十进制为货币字符串

Tom*_*len 18 c# currency decimal tostring

要显示我们所做的货币:

ToString("0.##")
Run Code Online (Sandbox Code Playgroud)

对于值5.00,输出为:

5
Run Code Online (Sandbox Code Playgroud)

对于值5.98,输出为:

5.98
Run Code Online (Sandbox Code Playgroud)

对于值5.90,输出为:

5.9
Run Code Online (Sandbox Code Playgroud)

我需要第三种情况才能得出2个小数点,例如:

5.90
Run Code Online (Sandbox Code Playgroud)

如果不影响其他结果我怎么能这样做?

Zac*_*ary 18

我知道这不会给你一个解决问题的格式,但它是一个解决它的简单解决方案.

(5.00).ToString("0.00").Replace(".00","");  // returns 5
(5.90).ToString("0.00").Replace(".00", ""); // returns 5.90
(5.99).ToString("0.00").Replace(".00", ""); // returns 5.99
Run Code Online (Sandbox Code Playgroud)

  • (5.00)的ToString( "C"); (7认同)

Jon*_*ood 16

尝试:

s.ToString("#,##0.00")
Run Code Online (Sandbox Code Playgroud)

要不就:

s.ToString("C")
Run Code Online (Sandbox Code Playgroud)

我知道没有内置的方法来扩展所有两个小数位,只有当两者都不为零时.可能只是使用一个if声明.

int len = s.Length;
if (s[len - 2] == '0' && s[len - 1] == '0')
    s = s.Left(len - 3);
Run Code Online (Sandbox Code Playgroud)

  • 他希望"5"能保持"5". (3认同)

小智 11

您可以使用扩展方法,如下所示:

public static string ToCurrencyString(this decimal d)
{
    decimal t = Decimal.Truncate(d);
    return d.Equals(t) ? d.ToString("0.##") : d.ToString("#, ##0.00")
}
Run Code Online (Sandbox Code Playgroud)


aha*_*fox 8

# 意味着如果没有数字则将其留空0表示如果没有数字则输入0

的ToString( "0.00")