在 Javascript、Excel、Python 和科学计算器中,模运算
-34086.1576962834 % 360.0 <-- python
=MOD(-34086.1576962834, 360.0) <-- Excel function
给出一个值113.84230371659942
。(或者非常接近的东西,取决于小数位数和四舍五入。)
但是在 T-SQL 中,
Select -34086.1576962834 % 360.0
返回值-246.1576962834
。
我试过使用
Select cast(-34086.1576962834 as numeric(30,15)) % cast(360.0 as numeric(30,15))
正如我所想,这可能是浮点数与固定十进制数学不匹配的一个例子,但这并不能解决问题。
为什么 SQL Server 不以与计算器/预期结果一致的方式执行此操作?更重要的是,有没有办法让 T-SQL 像我的计算器一样进行算术运算?
我主要使用 SQL Server 2019,但我已经确认 SQL Server 2012 和 2014 也给出相同的 -246... 结果。
Oracle 函数mod(x,y)
和 pythonmath.fmod(x,y)
给出相同的 -246.nnn 结果。