字符串格式表达式,仅当有小数(.net)时才显示带有2位小数的货币

时间:2010-07-10 12:00:54

标签: .net string formatting

Silverlight 4 / C#:我有一个标签,显示以线程文化的货币(带小数点后2位)格式化的数字,例如

25显示为25.00美元,25.01显示为25.01美元

我为此使用“StringFormat = C2”。我的问题是......如果有小数位,我只想显示2位小数。 e.g。

25应显示为25美元,25.01显示为25.01美元

使用正常数字我会使用# - 例如。 #。##如果它们不存在则会压缩小数,但是我没有得到货币符号。 C2。##不起作用。

有什么建议吗? (硬编码货币符号不是一种选择)

2 个答案:

答案 0 :(得分:4)

检查小数是否包含小数元素,并根据结果返回不同的表示:

public string GetFormatStringForDecimal(myDec){
    return (Decimal.Ceiling(myDec) > myDec) ? "C2" : "C0";
}

此函数将返回您问题中指定的小数的格式字符串。

答案 1 :(得分:1)

decimal value = 1603.42m;
var temp = string.Empty;
if (Decimal.Floor(value) < value) //means value is with decimal part
    temp = value.ToString("C2", new CultureInfo("en-US"));
else
    temp = value.ToString("C0", new CultureInfo("en-US"));
return temp;

FBTMoVGogot