转换为双倍

好吧我坐这个问题有点愚蠢,但我不知道如何谷歌这个解决方案。

假设我有一个数据库,其值在eg 1000.00

我使用Convert.ToDouble()将其转换为double;

在我的电脑上它可以工作,但是在我的服务器上它不会,除非我改为字符串和替换.,

1000,00适用于服务器但不适用于1000.00

但是,如果我将1000,00转换为Double,则无法将其再次保存在数据库中,而无需将其恢复为字符串并替换为。

我怎样才能克服这个问题。 操作系统是win7,服务器是SQL Server 2012。

 DataTable DT = SQLServer.ExecuteQueryWithResults("EXEC CalculateMonthlyBallance"); foreach (DataRow row in DT.Rows) { ClientCompany CC = Data.Companies.First(C => C.CompanyID == row[0].ToString()); Finance Saldo = new Finance(CC.CompanyID, "Monthly Saldo", "Monthly Saldo", 0, 0, new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1), F_Type.Saldo, -1); double rv = row[3].ToDouble(); MessageBox.Show("Company ID : " + CC.CompanyID.ToString() + " " + rv.ToString()); if (rv > 0) { Saldo.Debit = rv; } else if (row[3].ToDouble()  (S.F_Type == F_Type.Saldo) && (S.Date == new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1))) == 0) { CC.Finances.Add(Saldo); CaptureFinancial(Saldo); } } 

区域设置,特别是用于控制哪个符号用作小数点的区域设置,正在影响转换。 为避免这种情况,您需要执行区域不变转换,以便计算机上的区域设置不起作用。 例如:

 double value = double.Parse(stringValue, CultureInfo.InvariantCulture); 

也就是说,我想知道为什么你首先将浮点值存储为字符串。 最好在尽可能早的时候将用户输入转换为自然forms,并且尽可能晚地转换回字符串。

请参见Convert.ToDouble(string,CultureInfo)

这是因为您的CultureInfo。 显然,您的PC使用十进制表示法的句点,而您的服务器使用逗号。 如果您尝试使用其他方法转换其中一个,则会出现此问题。

解决方案: Convert.ToDouble()有一个额外的重载,允许您传递cultureInfo进行转换。 或者您可以将变量作为浮点数或小数保存在数据库中。