T-SQL舍入,首先截断为LENGTH + 2

时间:2016-04-08 16:44:14

标签: sql-server tsql

在使用T-SQL ROUND函数时,我注意到了一些奇怪的行为。看起来ROUND函数只查看要舍入的数字右侧的第一个数字。如果我将-6.146舍入到一个小数,我得到-6.1。我原本以为它会从右边开始,每个数字都是向左边开始,就像这样:-6.146 - > -6.15 - > -6.2

我也用Excel的圆函数观察了相同的行为。

下面的查询说明了我所描述的内容。我可以简单地使用嵌套的ROUND函数,如下所示,但我很好奇是否有更好的方法以及哪种方法在数学上是正确的。

DECLARE @Num AS FLOAT

SET @Num = -6.1463

SELECT @Num [OriginalVal], ROUND(@Num, 1, 0) [SingleRound]
, ROUND(ROUND(ROUND(@Num, 3, 0), 2, 0), 1, 0) [NestedRound]

结果

OriginalVal | SingleRound | NestedRound

-6.1463     | -6.1        | -6.2

1 个答案:

答案 0 :(得分:1)

我认为基本的经验法则是,在四舍五入中,你会看到你要四舍五入的地方右边的1位数字。您不会将它一直延伸到小数点右边的末尾。

http://math.about.com/od/arithmetic/a/Rounding.htm