Modulo (%) travaille avec Décimale de type de données, mais pas avec flotteur ou réel. POURQUOI?

Pourquoi modulo fonctionne très bien avec décimale, mais pas avec flotteur/réel
MSDN états à ce sujet "doit être une expression valide de l'un des types de données integer et monétaire catégories de types de données, ou le type de données numérique." pourquoi ne pas les valeurs flottantes, parce que c'est une valeur approximative ??

--Runs fine
declare @pri decimal
set @pri = 3.25
select @pri%2

Résultat 1

--Gives an error 402
declare @pri float
set @pri = 3.25
select @pri%2

Msg 402, Niveau 16, État 1, Ligne 3
Les types de données float et numérique sont incompatibles avec l'opérateur modulo.

  • La version de SQL Server utilisez-vous? Le premier me donne une erreur dans SQL Server 2000, trop.
  • Bien que je ne peux pas l'affirmer, je pense que vous avez raison, l'erreur d'arrondi que vous obtenez de l'binaire IEEE754 types float et double précision) fait de la langue concepteurs interdire modulo sur eux. Avec numeric et decimal vous pouvez spécifier une précision et l'échelle. C'est juste une supposition, mais, JavaScript et C, par exemple, sont plus qu'heureux de vous laisser mod sur flotteurs et en double (c'est fmod en C, bien sûr).
  • Protal: C'est parce que la première tente d'initialiser un point fixe, variable avec une virgule flottante un.
  • quelle est la version?
  • Sql Server 05-08