转换为双倍

Don*_*sen -1 c#

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

假设我有一个包含值的数据库e.g 1000.00.

我把它转换成双倍使用Convert.ToDouble();

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

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() < 0)
                {
                    Saldo.Credit = -rv;
                }

                MessageBox.Show(Saldo.Debit + " " + Saldo.Credit);
                CC.Finances = RetrieveFinances(CC.CompanyID).ToList();
                if (CC.Finances.Count(S => (S.F_Type == F_Type.Saldo) && (S.Date == new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1))) == 0)
                {
                    CC.Finances.Add(Saldo);
                    CaptureFinancial(Saldo);
                }
            }
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 8

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

double value = double.Parse(stringValue, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

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

  • 或者你需要首先避免字符串转换,这是我要求的. (5认同)