SQL 服务器中的 POWER 函数为负数

POWER function in SQL Server with negative numbers

我想使用 POWER 函数计算负数的三次方根(在 SQL Server 2019 中)

SELECT POWER(-8.000, 1.000 / 3)

但我不断收到此错误:

An invalid floating point operation occurred.

它适用于正数。

知道这里出了什么问题吗?

我无法解释为什么您对 POWER 的立方根调用不起作用。但是,假设输入是负数(-8),输出应该等于正输入的立方根的负数:

SELECT -1.0*POWER(8.000, 1.000 / 3) AS output;

这会按预期输出 -2.000。您甚至可以编写更通用的逻辑来解决此问题:

SELECT
    CASE WHEN input > 0 THEN POWER(input, 1.000 / 3)
         ELSE -1.0*POWER(-1.0*input, 1.000 / 3) END AS output
FROM yourTable;

您的计算不起作用的原因是:

(-8)^(1/3)              --> an integer, -2
(-8)^(0.33333333333333) --> a complex number

也就是说,浮点值是不精确的,不能表示三分之一之类的东西。并且该值必须 恰好 1/3 才能使该值成为浮点数。

如果您知道该值可以表示为浮点值,那么您可以使用:

sign(-8) * power(abs(-8), 1.0 / 3)

注意:这并不适用于所有情况。琐碎的:

sign(-4) * power(abs(-4), 1.0 / 2)

会return-2,这不是正确答案。