将字符串格式化为具有负货币的货币,如$(10.00)

时间:2012-04-26 19:57:01

标签: c# .net string-formatting currency-formatting

我需要格式化负货币,如下所示:$(10.00)

我尝试使用string.Format("{0:C}", itemprice),但这给了我这个结果($10.00)(括号内的$

我也试过

string fmt = "##;(##)";
itemprice.ToString(fmt);

但它给我与($10.00)

之前相同

如何得到如此结果的任何想法:$(10.00)

3 个答案:

答案 0 :(得分:5)

itemPrice.ToString(@"$#,##0.00;$\(#,##0.00\)");

应该有效。我刚刚在PowerShell上测试过它:

PS C:\Users\Jcl> $teststring = "{0:$#,##0.00;$\(#,##0.00\)}"
PS C:\Users\Jcl> $teststring -f 2 
$2,00
PS C:\Users\Jcl> $teststring -f -2
$(2,00)

这就是你想要的吗?

答案 1 :(得分:3)

使用Jcl的解决方案并使其成为一个很好的扩展:

public static string ToMoney(this object o)
{
    return o.toString("$#,##0.00;$\(#,##0.00\)");
}

然后打电话给它:

string x = itemPrice.ToMoney();

或另一个非常简单的实现:

public static string ToMoney(this object o)
{
    // note: this is obviously only good for USD
    return string.Forma("{0:C}", o).Replace("($","$(");
}

答案 2 :(得分:2)

您必须手动将其拆分,因为它是非标准格式。

string.Format("{0}{1:n2}", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, itemprice);