Float 到 Double 的转换给出了错误的值
Conversion of Float to Double gives incorrect value
我有一个捐赠网页,人们可以在其中指定捐赠的百分比用于慈善机构。我有适当的验证以确保他们不能分配超过 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%。
这显然是在推翻我的验证。
谁能建议我如何停止这种不正确的转换?
提前致谢。
Floating point values are intrinsically susceptible to rounding errors。使用没有此问题的小数代替:
Dim percentageAllocated As Decimal = myReader.GetDecimal(myReader.GetOrdinal("totalPercentage"))
我有一个捐赠网页,人们可以在其中指定捐赠的百分比用于慈善机构。我有适当的验证以确保他们不能分配超过 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%。
这显然是在推翻我的验证。
谁能建议我如何停止这种不正确的转换?
提前致谢。
Floating point values are intrinsically susceptible to rounding errors。使用没有此问题的小数代替:
Dim percentageAllocated As Decimal = myReader.GetDecimal(myReader.GetOrdinal("totalPercentage"))