5

我在我的 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,所有十进制值都被更改为逗号。如何在没有逗号的情况下获取十进制值。

4

4 回答 4

7

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

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

于 2012-06-29T10:29:14.413 回答
5

您可以根据以下代码更改数字格式信息

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

于 2012-06-29T10:32:43.713 回答
4

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

德国文化使用“。” 作为组分隔符和“,”作为小数分隔符

参考维基链接

于 2012-06-29T10:29:04.293 回答
1

这种行为对于德语是正确的。但是,您可能想要使用 . 当序列化为 XML、插入数据库等时,您可以使用不变的文化进行格式化。您可以在以下链接中了解有关 Invariant Culture 的更多信息: CultureInfo.InvariantCulture 是什么意思

于 2012-06-29T16:20:00.563 回答