十进制值分隔符问题

Decimal value delimiter issue

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

我正在将价格(仅十进制,不是货币格式)保存到 SQL 数据库。 在Windows8台电脑上,如果有十进制值,则该值向左移动,变成.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 列类型为 decimal(16, 2)。

我想按原样保存十进制值,不需要更改任何 windows 区域文化设置。源值将始终有 2 个小数位和一个 .十进制分隔符,这是我希望它保存在数据库中的方式。

我很困惑为什么会这样,非常感谢任何帮助。

更新:

通过简单转换和删除字符串转换解决了这个问题:

decimal RetailPrice = (decimal)(ds.Tables[1].Rows[m]["Retail_Price"] as double? ?? 0D);

你说你的源数据类型是float(在源SQL数据库中)。 您的目标数据类型应为 decimal。 所以你需要一个转换从浮点数到十进制.

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

麻烦你的是float到string的转换,完全可以避免这种转换。