德语 UI 区域性 de-DE 十进制更改为逗号值问题 asp.net



我在 asp.net 应用程序中使用德语UI文化。我正在根据下拉列表中选择的语言更改应用程序的 UI 区域性,在下拉列表中选择索引更改时,我正在使用此代码

Thread.CurrentThread.CurrentCulture = new CultureInfo(this.lstLanguage.SelectedValue);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(this.lstLanguage.SelectedValue);

下拉列表如下

<asp:DropDownList cssClass="ddllanguage" ValidationGroup="b" runat="server" ID="lstLanguage" AutoPostBack="True"  OnSelectedIndexChanged="LstLanguage_SelectedIndexChanged" meta:resourcekey="lstLanguage">                    
  <asp:ListItem Value="en-US" Text="English" meta:resourcekey="ListItemResource2" ></asp:ListItem>
  <asp:ListItem Value="de-DE" Text="Deutsch" meta:resourcekey="ListItemResource3"></asp:ListItem>
</asp:DropDownList>

我的问题是将语言更改为 de-DE 后,我应用程序中的所有十进制值都更改为逗号,所有十进制数(如 5.12)都为 5,12,所有十进制值都更改为逗号。如何获取不带逗号的十进制值。

您可以按照以下代码更改数字格式信息

Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";

尝试以下代码,根据区域性解析十进制值。

string str = "50,3";
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
double d = double.Parse(str, Thread.CurrentThread.CurrentCulture.NumberFormat);

它给出的结果 d = 50.3

Thread.CurrentUICulture用于

用户界面,它是用于显示文本、方向等的语言。
Thread.CurrentCulture旨在用于解析/格式化内容。日期和时间、数字和字符串比较(例如)。

如果您只想更改 UI 语言(并保留 Web 服务器文化的其他所有内容),则只需修改 Thread.CurrentUICulture

在德国文化中,十进制由","表示

德国区域性使用"."作为组分隔符,使用","作为小数点 分隔符

参考维基链接

此行为适用于德语。但是,您可能希望使用 .当序列化为 XML、插入到数据库等时,可以使用固定区域性进行格式化。可以在以下链接中了解有关固定区域性的详细信息:文化信息.不变文化是什么意思

最新更新