c# - 为什么 C# decimal ToString 不请求文化和货币?
问题描述
在给定数字和货币的情况下,我找不到将它们打印到给定文化的字符串的选项。我发现的最接近的东西是decimal.ToString("C", GIVEN_CULTURE)
,但这不会要求货币,并且会假设我在谈论文化所知道的货币。如果我在欧洲使用美元怎么办?
例如,Javascript 在构建字符串时会请求这两个参数:
GIVEN_STRING.toLocaleString(culture, { style: 'currency', currency: currency })
这是相关的,因为我正在开发的软件同时处理美元和 MXN(墨西哥比索)。我们的网络仪表板显示了关于文化的不同符号(Chrome 示例,我认为跨浏览器会有所不同):
zh:
- 美元有符号“$”
- MXN 有符号“MX$”
es-MX:
- 美元有符号“US$”
- MXN 有符号“$”
解决方案
如果您只担心货币符号,您可以轻松地将其设置为您喜欢的任何内容:
var format = (NumberFormatInfo)CultureInfo.CreateSpecificCulture("es-MX").NumberFormat.Clone();
format.CurrencySymbol = "US$";
decimal amount = 12.34m;
amount.ToString("C", format);
// OUTPUT:
// US$12.34
但通常还有更多的格式化货币值。如您所见,例如,由于特定的文化差异(如小数点、货币符号位置、间距等),该值在德国的格式会非常不同:
amount.ToString("C", CultureInfo.CreateSpecificCulture("de-DE"));
// OUTPUT:
// 12,34 €
推荐阅读
- python-3.x - 如何在 Python 中的终端密码提示中输入密码
- python - 如何切片数组以排除一行?
- neo4j - 计算在整个图上执行的 2 个节点之间的双向边
- java - 如何在 Java 的 Web 服务中为每个 API 调用特定的方法?
- angular - 反应式表单:如何在 Angular 7/8/9 中稍后将新的 FormGroup 或 FormArray 添加到现有的 FormGroup 中
- android - Android改变路径在画布中的位置
- google-chrome-devtools - Google Chrome Devtools 未正确显示亮点
- rust - 获取分区函数中项目的索引
- python - 将无效密码写入文本文件
- scala - 用于读取非常规日期格式的 Spark udf