Sha*_*pta 7 sql floating-point
为什么modulo可以使用十进制运行,但不能使用浮动/实际 MSDN状态" 必须是整数和货币数据类型类别中任何一种数据类型的有效表达式,或数值数据类型." 为什么不浮动值,因为它是一个近似值?
--Runs fine
declare @pri decimal
set @pri = 3.25
select @pri%2
Run Code Online (Sandbox Code Playgroud)
结果1
--Gives an error 402
declare @pri float
set @pri = 3.25
select @pri%2
Run Code Online (Sandbox Code Playgroud)
消息402,级别16,状态1,行3数据类型float和numeric在模运算符中不兼容.
如果您对文档有疑问?
股息必须是整数和货币数据类型类别中任何一种数据类型或数值数据类型的有效表达式。
它表示整数、货币(金钱、小钱)和数字
因此,不支持十进制。该文档说“数字在功能上与十进制相同”,但在某些上下文中(例如本例)可能具有不同的含义。
我猜想,浮点被视为数字数据类型,而十进制则不是
读取数据类型。它包含有关货币数据类型的信息。(钱,小钱)
更新:
这是按类别划分的数据类型列表。您可以点击 numeric 和 Money 的链接来查找其中的数据类型