首页 > 解决方案 > 使用 SQRT() 的浮点运算无效

问题描述

SQRT(X)当我输入一个值时,我收到一个无效的浮点运算错误。

发生此错误的原因是什么,我可以对该X值采取什么措施来防止此错误?

在某些情况下,该X值是库存商品的计算平均销售额。

我试过SQRT(ABS(x))没有运气。

谢谢

标签: sql-server

解决方案


据我所知,SQRT(X) 给出错误“发生无效浮点运算”的唯一情况是 X 为负数。但是,您已经通过使用 ABS 函数解决了这个问题,如下所示:SQRT(ABS(X))。

所以,我的猜测是错误并不是真的来自 SQRT 函数,而是来自附近的其他东西。让我们看看你给出的表达式:

SQRT(2*50*ABS(X)) / NULLIF(B*0.2/12,0))

这个表达式显然有一个额外的右括号。这让我认为它只是更大表达式的一部分,而更大的表达式是错误的原因。

例如,如果 B 为 0,则 NULLIF() 变为 NULL。您除以 NULL,从而得到 NULL 结果。现在,你如何处理这个结果?也许还有一些不能很好地处理 NULL 的计算?

这里有很多猜测。如果我的猜测没有为您指明正确的方向,那么了解导致错误的 B 和 X 的哪些值以及包含该表达式的完整语句会很有帮助。


推荐阅读