好吧我坐这个问题有点愚蠢,但我不知道如何谷歌这个解决方案.
假设我有一个包含值的数据库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)
区域设置,特别是用于控制哪个符号用作小数点的区域设置,正在影响转换.为避免这种情况,您需要执行区域不变转换,以便机器上的区域设置不起作用.例如:
double value = double.Parse(stringValue, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
也就是说,我想知道为什么你首先将浮点值存储为字符串.最好在尽可能早的时候将用户输入转换为自然形式,并且尽可能晚地转换回字符串.
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |