十进制值分隔符问题

时间:2015-02-26 07:14:07

标签: c# sql-server-2008 .net-2.0

不确定如何在标题中描述问题。

我将价格(仅十进制,而不是货币格式)保存到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);

1 个答案:

答案 0 :(得分:1)

您说您的源数据类型是float(在源SQL数据库中)。 您的目标数据类型应为decimal。 所以你需要转换从float到decimal

在您的代码中,您有一个字符串值strPriveValue

从浮动到字符串的转换会导致您的麻烦,您可以完全避免这种转换。