Em Javascript, Excel, Python e uma calculadora científica, a operação de módulo
-34086.1576962834 % 360.0 <-- python
=MOD(-34086.1576962834, 360.0) <-- Excel function
dá um valor de 113.84230371659942
. (Ou algo muito próximo disso, dependendo do número de casas decimais e arredondamento.)
Mas no T-SQL,
Select -34086.1576962834 % 360.0
retorna um valor de -246.1576962834
.
eu tentei usar
Select cast(-34086.1576962834 as numeric(30,15)) % cast(360.0 as numeric(30,15))
Como eu estava pensando, talvez este fosse um exemplo de flutuação versus matemática decimal fixa que não correspondia, mas isso não resolve.
Por que o SQL Server não executa esta operação de maneira consistente com as calculadoras/resultados esperados? E mais importante, existe uma maneira de fazer o T-SQL fazer aritmética da mesma forma que minha calculadora faz?
Estou usando principalmente o SQL Server 2019, mas confirmei que o SQL Server 2012 e 2014 também fornecem os mesmos -246... resultados.
A função Oracle mod(x,y)
e o python math.fmod(x,y)
fornecem o mesmo resultado -246.nnn.