十进制值分隔符问题
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的转换,完全可以避免这种转换。
不确定如何在标题中描述问题。
我正在将价格(仅十进制,不是货币格式)保存到 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的转换,完全可以避免这种转换。