float数据类型问题

时间:2012-11-25 05:49:53

标签: c# sql-server-2008

我有一个带月薪的radnumeric文本框,如下所示。 txtMonthlySalary.Text = 816177200 现在我需要计算年薪并将其保存为sql server table中的浮点变量。我的表已经是现有表,年薪字段是float类型。

年薪的实际计算得出以下结果: 年薪= 816177200 * 12 = 9,794,126,400

但在节目中, float Fld_AnnualSalary = float.Parse(txtMonthlySalary.Text)* 12; 结果为9,794,127,000

这里浮点数据类型对结果进行舍入,这与实际预期结果有很大差异。 我如何处理这个问题,以便我可以在不进行舍入的情况下获得乘法的确切结果,并将其保存在sql sever表中的float变量中。

2 个答案:

答案 0 :(得分:4)

float甚至double通常不是可接受的数据类型,可用于实际货币价值(正如您自己证明的那样)。

请在代码和SQL中的相应类型中使用Decimal

答案 1 :(得分:0)

float的精度限制在七位左右,而您正尝试对九位数816177200进行计算。

Alexeis Levenkov的anwer包含了解决问题的方法。 Decimal数据类型至少可以包含28位有效数字。