2012-11-25 51 views
0

我有一个包含月薪的radnumeric文本框,如下所示。 txtMonthlySalary.Text = 816177200 现在我需要计算年薪,并将其保存为sql服务器表中的浮点变量。我的表已经是现有表,而年薪表字段是float类型。浮点数据类型问题

上年薪实际计算给出以下结果: 年薪= 816177200 * 12 = 9794126400

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

这里float数据类型将看起来的结果舍入,这与实际的预期结果有很大的差异。 我该如何处理这个问题,以便我可以在不舍入的情况下获得乘法的精确结果,并将其保存在SQL服务器表中的浮点变量中。

回答

4

float甚至double通常不可接受的数据类型与真实货币值一起使用(就像您刚刚证明的那样)。

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

0

A float的精度限制在七位数左右,并且您试图对九位数字816177200进行计算。

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