将Float转换为Double会给出不正确的值

时间:2015-01-19 12:50:56

标签: mysql sql-server vb.net type-conversion data-conversion

我有一个捐款网页,人们可以在这个网页上指明他们捐赠的百分比是多少捐给慈善机构。我已经进行了验证,以确保它们不能分配超过100%。这可以正常工作,直到人们添加小数值。

百分比作为浮点数存储在SQL数据库中,我使用以下存储过程引入可用于分配的总百分比。

SELECT giftid, SUM(percentage) totalPercentage 
FROM dbo.giftFundArea
WHERE giftid = @giftid
GROUP BY giftid

我的页面查看存储过程并使用以下代码访问该值。

Dim percentageAllocated As Double = myReader.GetDouble(myReader.GetOrdinal("totalPercentage"))

当我在Managememt Studio中运行存储过程时,我发现为特定礼物分配的总百分比是33.4%但是当我调试我的页面时,我看到percentageAllocated的值为33.400000000000006%。

这显然是在放弃我的验证。

有人可以建议我如何阻止这种错误的转换吗?

提前致谢。

0 个答案:

没有答案