gpt4 book ai didi

c# - 币种显示去掉 'US'之前的 '$'

转载 作者:行者123 更新时间:2023-11-30 13:45:44 24 4
gpt4 key购买 nike

我正在使用 .ToString("C") 方法以货币格式显示十进制数。但结果看起来像 "US$5,365.20" 而不是 "$5,365.20"。我尝试使用 .ToString("C", new CultureInfo("en-US")),结果相同。但是当我尝试使用另一种文化(例如 en-GB)时,一切正常(£1,234.56)。

那么,为什么“US”出现在“$”符号之前呢?我该如何删除它?

UPD 对不起。再次检查了一下,我明白了,new CultureInfo("en-US")) 一切正常,我查看了另一个标签 :) 但现在我明白了(感谢@Mike McCaughan) ,当前货币符号是“US$”。当前的区域性名称是“en-US”。

最佳答案

“US”出现在“$”之前,因为有人使用控制面板中的区域小程序自定义了货币符号。要获取默认货币符号,请使用 CultureInfo.GetCultureInfo而不是 constructor :

decimal amount = 5365.20M;
Console.WriteLine(amount.ToString("C")); // US$5,365.20
Console.WriteLine(amount.ToString("C", new CultureInfo("en-US"))); // US$5,365.20
Console.WriteLine(amount.ToString("C", CultureInfo.GetCultureInfo("en-US"))); // $5,365.20

MSDN Library 文档解释了差异。对于构造函数:

The user might choose to override some of the values associated with the current culture of Windows through the regional and language options portion of Control Panel. ... If the culture identifier associated with name matches the culture identifier of the current Windows culture, this constructor creates a CultureInfo object that uses those overrides...

对于 GetCultureInfo:

If name is the name of the current culture, the returned CultureInfo object does not reflect any user overrides. This makes the method suitable for server applications or tools that do not have a real user account on the system and that need to load multiple cultures efficiently.

更新: 如果 .ToString("C", new CultureInfo("en-US")) 有效但 .ToString("C") 没有,那么问题可能是某些其他代码为您的线程分配了自定义 CultureInfo,其中“US$”作为货币符号。

关于c# - 币种显示去掉 'US'之前的 '$',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com