任何人都可以在SQL Server中解释以下结果吗?我很难过。SQL Server奇怪上限()行为
declare @mynum float = 8.31
select ceiling(@mynum*100)
结果831
declare @mynum float = 8.21
select ceiling(@mynum*100)
结果822
我测试数字的整个范围(SQL Server 2012
)。有些增加而其他人保持不变。我不知道为什么天花板会以不同的方式处理其中一些问题。从float
更改为decimal(18,5)
似乎解决了这个问题,但我很谨慎,可能会有其他影响,因此我错过了。任何解释都会有所帮助。
你为什么使用浮动?我不知道切换到十进制的任何影响,除非你必须输入更多,并且会有更多的可预测的准确性。去做就对了。请参阅[本文](http://databases.aspfaq.com/database/what-datatype-should-i-use-for-numeric-columns.html),[本文](http://classicasp.aspfaq。 com/general/why-does-3-2-1-5-4-7000000000000002.html),[本文](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-习惯性地使用错误的数据类型.aspx)和[本问答](http://stackoverflow.com/q/1355418/61305)。 – 2014-10-02 16:41:40
Thx为物品。 – TEIHelp 2014-10-02 17:45:05