【发布时间】:2014-07-02 06:17:51
【问题描述】:
我已经搜索过这个但我没有找到任何东西,我希望这不是一个双重问题。 我正在像这样在 TSQL 中做一个公式:
@Temp = SQRT((((@Base1 - 1) * (@StDev1 * @StDev1))
+ ((@AvgBase - 1) * (@AvgStDev * @AvgStDev)))
* ((1 / @Base1) + (1 / @AvgBase))
/ (@Base1 + @AvgBase - 2))
但它总是返回一个 0。
@Base1 和@AvgBase 是int,其余参数是float,但我也试过decimal(15,15)。
我还尝试使用函数POWER() 更改自乘,但我唯一无法解决的问题是这部分:(1 / @Base1) + (1 / @AvgBase),因为@Base1 和@AvgBase 太大了,计算结果为0 ,0001... 以及更多数字。如何强制引擎不将结果舍入为 0?谢谢
编辑:我解决了将 @AvgBase 和 @Base1 更改为 float 类型的问题。我猜1/@param 和 @param -> int 的结果会为您提供四舍五入的结果,当您进行投射或其他操作时,无论如何您都在处理四舍五入的结果。
【问题讨论】:
标签: tsql floating-point decimal rounding