SQL 服务器。考虑到所有小数位,我如何舍入小数
SQL Server. How do i round a decimal considering all decimal digits
我正在尝试对小数进行四舍五入,但似乎在 SQL 中进行四舍五入,服务器只考虑四舍五入小数位数后的一位数字。
SELECT CAST(795.5921967249997 AS decimal(18,8))
--795.59219672
SELECT ROUND(795.5921967249997, 8)
--795.5921967200000
我正在寻找的是考虑所有数字的公平舍入。在上面的示例中,我期望 3 作为第 8 个十进制数字。
我可以在不编写自己的函数的情况下做到这一点吗?
如果您想在那个位置上输入“3”,那么您正在更改舍入规则。您可以分两步完成此操作:
SELECT CAST(CAST(795.5921967249997 AS decimal(18, 9)) as decimal(18, 8))
我正在尝试对小数进行四舍五入,但似乎在 SQL 中进行四舍五入,服务器只考虑四舍五入小数位数后的一位数字。
SELECT CAST(795.5921967249997 AS decimal(18,8))
--795.59219672
SELECT ROUND(795.5921967249997, 8)
--795.5921967200000
我正在寻找的是考虑所有数字的公平舍入。在上面的示例中,我期望 3 作为第 8 个十进制数字。 我可以在不编写自己的函数的情况下做到这一点吗?
如果您想在那个位置上输入“3”,那么您正在更改舍入规则。您可以分两步完成此操作:
SELECT CAST(CAST(795.5921967249997 AS decimal(18, 9)) as decimal(18, 8))