仅在大于5时的舍入值

时间:2017-07-26 05:00:36

标签: sql sql-server sql-server-2008

我不确定这是一个重复的问题。

仅当后续值大于5时,我才需要ROUND值。

例如:

如果我有 123.4575 ,则舍入值应为 123.457

如果我有 123.4576 ,则舍入值应为 123.458

但默认ROUND无效,正如我所期待的那样。请参阅以下查询

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

结果:

<小时/> 123.458(需要123.457)

我只需要三个小数点。

我更喜欢向我推荐一些内置函数,而不是自己编写函数。

感谢。

1 个答案:

答案 0 :(得分: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