asp.net中的德国UI文化de-DE十进制更改为逗号值问题

Kum*_*rav 4 c# asp.net

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

Thread.CurrentThread.CurrentCulture = new CultureInfo(this.lstLanguage.SelectedValue);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(this.lstLanguage.SelectedValue);
Run Code Online (Sandbox Code Playgroud)

下拉列表如下

<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>
Run Code Online (Sandbox Code Playgroud)

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

Adr*_*tti 5

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

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


Hit*_*tel 5

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

Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
Run Code Online (Sandbox Code Playgroud)

尝试使用以下代码根据文化解析十进制值。

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

它给出了结果 d = 50.3

  • @Gaurav 这是您能为客户做的最糟糕的事情。如果他们看到德文文本,他们可能希望以德文输入数据(数字、日期、用于比较和排序的字符串)。如果他们知道使用“中性”文化(en-US)输入数据,那么他们会发疯,因为您混合了不同的设置(德语日期,英语小数,数千人将无法使用并再次以德语订购)。 (3认同)
  • @Gaurav,再想一想我同意阿德里亚诺的观点:虽然可以调整文化信息,但它不会帮助您的用户意识到他们必须使用“.”小数点分隔符而不是“,”。根据您执行计算的方式,诸如“Double.Parse()”之类的方法可以使用德国文化并将“,”识别为小数分隔符。 (2认同)