1e8在分裂中的意义

时间:2015-01-15 20:32:50

标签: sql sql-server-2012

我正在尝试理解SQL Server 2012中的一个小函数调用。我试图在线搜索它但找不到太多信息。

功能本身很简单。它有两个参数@value和@default,都是int。当@value为null或0时,此函数DivFix返回@default,否则返回@value本身。

在各种SQL语句中调用此函数以避免除以零错误。

Select col1 / DivFix(col2,1e8)

我的问题是,1e8在这里代表什么,它如何帮助克服零差错?

2 个答案:

答案 0 :(得分:2)

表示10 ^ 8(10次幂8),因此为100000000。 它是" power(10,8)"

的缩写

从数学的角度来看,它并不是一个很好的方法来处理"除以0和#34;问题恕我直言。

使用一个非常小的数字(返回接近无限而不是NaN / a失败的东西)而不是这个非常大的数字(这使得微积分返回"接近0但接近0但更有意义)不完全",除非最后的舍入使其等于0)。

答案 1 :(得分:0)

xEyx * 10^y的常见简写。所以2e8 = 2 * 10^8

至于它如何帮助除以零或为零:我不知道你的要求是什么。 x/0不是有效的数学运算。在微积分中,结果可以是负无穷大的正无穷大,取决于你如何接近0。

目前的意图似乎是使结果数量非常少。那么为什么不定义一个常量或者只是将结果设置为0:

DECLARE @VerySmallNumber float = 1E-8 -- ha! the exponent can be negative too

SELECT IIF(col2 = 0 OR col2 IS NULL, @VerySmallNumber, col1 / col2)