[当我们像String.Format("{0:C}", 126.45)
那样转换时,返回$ 126.45
但是如果我们像String.Format("{0:C}", -126.45)
那样进行转换,则会返回($ 126.45)
为什么负转换返回括号?如果我们不想要括号,该怎么办?
您为什么不尝试以下方法:
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
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) ?? ""
}
}
在美国语言环境中,括号用于表示负值。目视扫描一长列数字,许多人发现更容易看到负数。通常,最令人担忧的是负值(糟糕!我的支票帐户余额透支了)。
要获得不同的格式化行为,可以更改语言环境,也可以将format specifier更改为F。
带有括号,因为这是您使用的CultureInfo
的标准。
我自己从未做过,但是格式的组成由当前NumberFormatInfo
实例控制。
如果您能解决,请回答您自己的问题,我会加您