货币的字符串格式(使用大括号格式化的负值)

时间:2012-05-04 16:55:46

标签: currency string.format

当我们转换为String.Format("{0:C}", 126.45)时,它返回$ 126.45

但如果我们转换为String.Format("{0:C}", -126.45),则返回($ 126.45)

为什么负转换返回括号? 如果我们不想要这个括号怎么办?

4 个答案:

答案 0 :(得分:10)

你为什么不尝试这样的事情:

String.Format("{0:$#,##0.00}", -126.45)

根据the documentation这里格式为“{0:C1}”或“{0:C2}”应该有效,但由于一些奇怪的原因它不是......

另一种方法可能是设置CultureInfo:

CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.CurrencyNegativePattern = 1;
string s = string.Format(culture, "{0:c}", -126.45);

参考here

答案 1 :(得分:1)

Swift 5 这是最好的解决方案,如果您追赶这种价值(-300)

extension Double {
static let twoFractionDigits: NumberFormatter = {
    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    formatter.minimumFractionDigits = 2
    formatter.maximumFractionDigits = 2
    formatter.currencySymbol = "$"
    formatter.currencyCode = "USD"
    formatter.numberStyle = .currency
    formatter.usesGroupingSeparator = true

    return formatter
}()
var formatted: String {
    return Double.twoFractionDigits.string(for: self) ?? ""
}

}

答案 2 :(得分:0)

在en-US语言环境中,括号用于表示负值。通过直观地扫描一长串数字,很多人发现更容易看到负片。通常,这是最值得关注的负值(哎呀!我的支票账户余额已经透支)。

要获得不同的格式化行为,您可以更改语言环境,也可以将format specifier更改为F。

答案 3 :(得分:0)

它有括号,因为这是你正在使用的CultureInfo的标准。

从未自己完成,但格式的组成由当前NumberFormatInfo实例控制。

如果你搞清楚了,回答你自己的问题,我会加你