2017-07-26 52 views
2

我不确定这是否是重复问题。只有大于5的圆形值

我需要ROUND值仅在随后的值大于5

例如:

如果我有123.4575,则舍入的值应该是123.457

如果我有123.4576,那么四舍五入的值应该是123.458

但默认ROUND不工作,因为我期待。请参见下面的查询,

select cast(round(123.4575, 3) as decimal(18,3)) 

结果:


123.458(其中它需要123.457)

我只需要3位小数点。

我宁愿建议我一些内置函数,而不是自己编写函数。

谢谢。

回答

1

这已被询问(多次)。 5总是由SQL Server四舍五入。如果你不想写你自己的日常看看Minh的回答here。这显示了一个巧妙的诀窍,用case语句和FLOOR来实现你想要的。

另外一个易于替代方法是从你的电话号码首先在精度1大于您的舍入中减去1,从而:

SELECT CAST(ROUND(123.4575 - 0.00001, 3) as decimal(18,3)) 

给出123.457,同时

SELECT CAST(ROUND(123.4576 - 0.00001, 3) as decimal(18,3)) 

给出123.458