货币的字符串格式(带大括号的负值)

问题描述 投票:1回答:4

[当我们像String.Format("{0:C}", 126.45)那样转换时,返回$ 126.45

但是如果我们像String.Format("{0:C}", -126.45)那样进行转换,则会返回($ 126.45)

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

currency string.format
4个回答
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
投票

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) ?? ""
}

}


0
投票

在美国语言环境中,括号用于表示负值。目视扫描一长列数字,许多人发现更容易看到负数。通常,最令人担忧的是负值(糟糕!我的支票帐户余额透支了)。

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


0
投票

带有括号,因为这是您使用的CultureInfo的标准。

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

如果您能解决,请回答您自己的问题,我会加您

© www.soinside.com 2019 - 2024. All rights reserved.