msg 3623,发生无效的浮点操作

rks48beu  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(312)

当我试图更新一些表的值时,出现了这个错误。
我有一个表列和一些浮点值

Values 
 ---------------------
 11.7830808596997
 -9.41220524769667
  1.70771403155729
-26.1598813945345
  1.40722323420305
  0.315202798180501
 -3.27870943910565
  4.49832736699458
-21.8406197004573
 12.6569938818624
 10.3327211608816
-14.9366297400332
 -1.96665717283736
  5.90430556370099
  1.59122918690946
  1.01784176743728
-41.3800628432377

现在我想换成0.3333的幂。
所以我写了一份声明

update table 
set value = power(value, 0.3333)

但我犯了个错误
味精3623
发生无效的浮点操作
你能建议我怎么修吗?我想做一些像

(1 + value) ^ 1/3 - 1

在t-sql中

l2osamch

l2osamch1#

我想这就是你想要的逻辑:

select sign(val) * exp(log(abs(val)) / 3)
from (select -8 as val) t

问题是不能将负数提升为分数次幂,因为结果通常是虚数,而不是浮点数。这个简单的函数将值转换为正数并记住符号。
您还可以使用:

select sign(val) * power(abs(val), 1.0 / 3)

这是一把小提琴。

相关问题