为什么取模运算能很好地使用十进制而不是浮点数/实数
MSDN对此进行说明:“必须是整数和货币数据类型类别中的任何一种数据类型或数字数据类型的有效表达式。”为什么不 float 值,因为它是一个近似值?
--Runs fine
declare @pri decimal
set @pri = 3.25
select @pri%2
结果1
--Gives an error 402
declare @pri float
set @pri = 3.25
select @pri%2
消息402,第16层,状态1,第3行
在模运算符中,float和numeric数据类型不兼容。
最佳答案
如果您对文档有疑问?
MSDN documentation
dividend must be a valid expression of any one of the data types in the integer and monetary data type categories, or the numeric data type.
它表示整数,货币(钱,小钱)和数字
因此,不支持十进制。该文档说“数字在功能上与十进制相同”,但在诸如此类的某种情况下可能具有不同的含义。
我想,浮点数被视为数字数据类型,而十进制不是
阅读data types。它具有有关货币数据类型的信息。 (钱,小钱)
更新:
这是catagory wise data type list。您可以单击数字和货币的链接来查找其中包含哪些数据类型
关于sql - 模数(%)适用于十进制数据类型,但不适用于 float 或实数。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9580677/