我想使用 POWER 函数计算负数的第三个根(在 SQL Server 2019 中)
SELECT POWER(-8.000, 1.000 / 3)
但我不断收到此错误:
发生了无效的浮点运算。
它适用于正数。
任何想法这里有什么问题?
我想使用 POWER 函数计算负数的第三个根(在 SQL Server 2019 中)
SELECT POWER(-8.000, 1.000 / 3)
但我不断收到此错误:
发生了无效的浮点运算。
它适用于正数。
任何想法这里有什么问题?
我没有解释为什么你的立方根调用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)
将返回 -2,这不是正确答案。