相同的文化,不同的价值转换

时间:2014-07-03 11:58:09

标签: c# asp.net culture

我的网站将文本文件中的数据提取到数据库中。读完数据后,我使用:

将字符串值转换为double
oracom.Parameters.Add("nstpreisvm", OracleDbType.Double).Value = Convert.ToDouble(_material.Mat_StPreisVm);

如果我现在检查数据库中的结果,(列需要NUMBER - 格式),我会得到两个不同的值:在我的localhost上通过Visual Studio 2010,数据库返回10,15 - 但是,如果我在网络服务器上进行处理,则数据库仅显示10。这是怎么发生的?

我现在在网站上实施了一些标签,在页面加载中填充了当前的文化:

label.Text = Thread.CurrentThread.CurrentCulture.ToString();

两个实例的CurrentCulture都是en-GB,那么这里的问题是什么?我错过了什么吗?


我的本​​地Windows是带有德语语言包的Win7 SP1,服务器是带有标准英语安装的Win2008 R2。

1 个答案:

答案 0 :(得分:1)

我们在客户服务器上遇到类似的问题,其中客户手动更改了该服务器上特定文化的小数分隔符号。您可以使用以下方式检查:

Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator

我建议您在进行解析时明确指定小数点分隔符号:

Double.Parse("1,25", new NumberFormatInfo(){ NumberDecimalSeparator = "," });