我在我的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所有十进制值都更改为逗号。 如何在没有逗号的情况下获取十进制值。
答案 0 :(得分:4)
在德国文化中,十进制被“,”
去除德国文化使用“。”作为组分隔符和“,”作为小数 分离器
答案 1 :(得分:4)
Thread.CurrentUICulture
旨在用于用户界面,它是用于显示文本,方向等的语言。
Thread.CurrentCulture
旨在用于解析/格式化内容。日期和时间,数字和字符串比较(例如)。
如果您只想更改UI语言(并保留其他所有文档的Web服务器),则只需修改Thread.CurrentUICulture
。
答案 2 :(得分:4)
您可以根据以下代码更改数字格式信息
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
答案 3 :(得分:1)
这种行为对德语是正确的。 但是,您可能想要使用。当序列化为XML,插入数据库等时,您可以使用不变文化进行格式化。您可以在以下链接中了解有关Invariant Culture的更多信息: What does CultureInfo.InvariantCulture mean