1

当我们像String.Format("{0:C}", 126.45)它一样转换时返回 126.45 美元

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

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

4

4 回答 4

11

你为什么不尝试类似的东西:

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

根据此处的文档,“{0:C1}”或“{0:C2}”的格式应该可以工作,但由于某些奇怪的原因它不是..

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

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

参考这里

于 2012-05-04T17:08:15.620 回答
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) ?? ""
}

}

于 2020-02-14T13:53:48.767 回答
0

在 en-US 语言环境中,括号用于表示负值。目视扫描一长列数字,许多人发现更容易看到负数。通常最受关注的是负值(哎呀!我的支票账户余额透支了)。

要获得不同的格式化行为,您可以更改您的语言环境,或者您可以将格式说明符更改为 F 之类的内容。

于 2012-05-04T17:11:03.347 回答
0

它有括号,因为这是CultureInfo你使用的任何东西的标准。

我自己从来没有做过,但格式的构成是由当前NumberFormatInfo实例控制的。

如果你弄明白了,回答你自己的问题,我会加你的

于 2012-05-04T17:11:11.093 回答