我正在尝试舍入小数,似乎在SQL Server中舍入只考虑舍入比例的最后一位数后的一位数。
SELECT CAST(795.5921967249997 AS decimal(18,8))
--795.59219672
SELECT ROUND(795.5921967249997, 8)
--795.5921967200000
我正在寻找的是一个公平的舍入,它考虑所有数字。在上面的例子中,我期待3为第8个十进制数字。 如果不编写自己的函数,我可以这样做吗?
答案 0 :(得分:4)
如果你想要" 3"在那个位置,那么你正在改变舍入规则。您可以分两步完成此操作:
SELECT CAST(CAST(795.5921967249997 AS decimal(18, 9)) as decimal(18, 8))