不确定如何在标题中描述问题。
我将价格(仅十进制,而不是货币格式)保存到SQL数据库。 在Windows 8计算机上,如果有小数值,则该值将向左移动,并变为.00十进制。
例如:
120.34将在数据库中变为12034.00。
120.00将在数据库中为120.00。
在Windows 7上,我们不会遇到这个问题。
decimal RetailPrice = Convert.ToDecimal(strPriceValue , CultureInfo.InvariantCulture);
cmd.Parameters.Add("@retail_price", System.Data.SqlDbType.Decimal).Value = RetailPrice;
sql列类型是十进制(16,2)。
我想按原样保存小数值,而不需要更改任何Windows区域文化设置。源值将始终具有2个小数空格和a。十进制分隔符,这就是我希望它保存在数据库中的方式。
我很困惑,为什么会这样,任何帮助都会非常感激。
更新
简单转换并删除修复此问题的字符串转换:
decimal RetailPrice = (decimal)(ds.Tables[1].Rows[m]["Retail_Price"] as double? ?? 0D);
答案 0 :(得分:1)
您说您的源数据类型是float
(在源SQL数据库中)。
您的目标数据类型应为decimal
。
所以你需要转换从float到decimal 。
在您的代码中,您有一个字符串值strPriveValue
从浮动到字符串的转换会导致您的麻烦,您可以完全避免这种转换。