0

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

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

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

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

4

2 回答 2

4

float甚至double不是通常可接受的数据类型来处理真实货币值(正如您刚刚为自己证明的那样)。

Decimal在 SQL 中的代码和对应类型中使用。

于 2012-11-25T05:56:34.023 回答
0

浮点数的精度限制为大约七位数,而您正在尝试对九位数进行计算816177200

Alexeis Levenkov 的答案包含您问题的解决方案。Decimal数据类型至少可以包含 28 个有效数字。

于 2012-11-25T06:01:19.180 回答