当我们转换为String.Format("{0:C}", 126.45)
时,它返回$ 126.45
但如果我们转换为String.Format("{0:C}", -126.45)
,则返回($ 126.45)
为什么负转换返回括号? 如果我们不想要这个括号怎么办?
答案 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
实例控制。
如果你搞清楚了,回答你自己的问题,我会加你