我需要按如下方式格式化负货币:$(10.00)
我尝试使用string.Format("{0:C}", itemprice)
,但这给了我这个结果($10.00)
(括号内的 $
我也试过
string fmt = "##;(##)";
itemprice.ToString(fmt);
但它给了我和以前一样的东西($10.00)
关于如何获得这样的结果的任何想法:$(10.00)
.
我需要按如下方式格式化负货币:$(10.00)
我尝试使用string.Format("{0:C}", itemprice)
,但这给了我这个结果($10.00)
(括号内的 $
我也试过
string fmt = "##;(##)";
itemprice.ToString(fmt);
但它给了我和以前一样的东西($10.00)
关于如何获得这样的结果的任何想法:$(10.00)
.
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)
那是你要的吗?
使用 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("($","$(");
}
您必须手动将其拆分,因为它是非标准格式。
string.Format("{0}{1:n2}", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, itemprice);