sql - 模数(%)适用于十进制数据类型,但不适用于 float 或实数。为什么?

标签 sql floating-point

为什么取模运算能很好地使用十进制而不是浮点数/实数
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/

相关文章:

sql - mysql,遍历列名

java - 如何将空字符串更新到oracle Clob

mysql - 用 mysql float 类型表示十进制数?

sql - 创建不可为空的列,但使用某个给定值填充现有的 NULL

mysql - INSERT ... ON DUPLICATE KEY(什么都不做)

c# - 随着时间的推移,两个值之间的 Lerp

python - 如何在 Python 中将 unicode 字符转换为 float ?

c# - Float/Float = 奇怪的结果

sql - TSQL 在 sql-server 中清除数据库的模式?

c - 打印 double float