SQL提升为错误的能力“发生了无效的浮点操作”。

use*_*762 5 t-sql sql-server

我有这个代码

declare @termtomonths float
set @termtomonths=120/365.00 
set @termtomonths= round(@termtomonths,2,1)*12
select power(1-(1+0.11/12.00), -3.84)
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它返回一个错误

    Msg 3623, Level 16, State 1, Line 6
An invalid floating point operation occurred.
Run Code Online (Sandbox Code Playgroud)

它在MS EXCEL中尝试此公式,并且有效

=1-(1+0.11/12)^-3.84
Run Code Online (Sandbox Code Playgroud)

预期结果

  0.034432865
Run Code Online (Sandbox Code Playgroud)

如何将这个Excel公式转换为sql公式?

谢谢

All*_*sen 4

你的SQL表达式是错误的。要获得与 Excel 中相同的效果,您应该执行以下操作:

SELECT  1 - POWER(( 1 + 0.11 / 12.00 ), -3.84);
Run Code Online (Sandbox Code Playgroud)

这将为您提供:0.0344326
请注意,您在 SQL 中拥有1 -POWER 函数内部,但在 Excel 中没有。

该错误也会导致您获得浮点错误,因为您的基数不能为负。