我不确定这是一个重复的问题。
仅当后续值大于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)
我只需要三个小数点。
我更喜欢向我推荐一些内置函数,而不是自己编写函数。
感谢。
答案 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