将值插入SQL float列会生成奇怪的结果

时间:2008-10-29 19:36:45

标签: sql sql-server floating-point

我正在开发一个传统的ASP应用程序。我试图将值(40.33)插入到SQL Server 2000中恰好是浮点类型的字段中。我在应用程序中看到的每个地方(通过一些日志记录)都会向存储过程发送40.33。当我在调用时对数据库运行SQL事件探查器时,我在跟踪中看到的值是4.033000183105469e + 001

所有额外的垃圾来自哪里(183105469)?

为什么当我通过40或40.25时没有额外的东西?

这只是使用float的奇怪副作用之一吗?当我写一些东西时,我通常使用金钱或小数或其他东西,所以不熟悉float数据类型。

3 个答案:

答案 0 :(得分:8)

是的,这是使用FLOAT的一个奇怪的,虽然well-known的副作用。

在Microsoft SQL Server中,如果需要具有缩放比例的精确数字,则应使用精确的数值数据类型,例如NUMERIC, DECIMALMONEY or SMALLMONEY

不要使用FLOAT。

答案 1 :(得分:0)

我认为这可能只是一个精确问题 - 数字的0.33部分无法用二进制表示 - 这可能是你可以达到的最接近的部分。

答案 2 :(得分:0)

问题是花车不是100%准确。如果您需要准确的数字(特别是在处理货币值时)......您应该使用十进制类型。