当我们像String.Format("{0:C}", 126.45)
它一样转换时返回 126.45 美元
但如果我们像 String.Format("{0:C}", -126.45)
它一样转换返回 ($126.45)
为什么负转换返回大括号?如果我们不想要这个牙套怎么办?
当我们像String.Format("{0:C}", 126.45)
它一样转换时返回 126.45 美元
但如果我们像 String.Format("{0:C}", -126.45)
它一样转换返回 ($126.45)
为什么负转换返回大括号?如果我们不想要这个牙套怎么办?
你为什么不尝试类似的东西:
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);
参考这里
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) ?? ""
}
}
在 en-US 语言环境中,括号用于表示负值。目视扫描一长列数字,许多人发现更容易看到负数。通常最受关注的是负值(哎呀!我的支票账户余额透支了)。
要获得不同的格式化行为,您可以更改您的语言环境,或者您可以将格式说明符更改为 F 之类的内容。
它有括号,因为这是CultureInfo
你使用的任何东西的标准。
我自己从来没有做过,但格式的构成是由当前NumberFormatInfo
实例控制的。
如果你弄明白了,回答你自己的问题,我会加你的