【问题标题】:SQL Server. How do i round a decimal considering all decimal digitsSQL 服务器。考虑到所有小数位,我如何舍入小数点
【发布时间】:2015-10-21 11:27:04
【问题描述】:

我正在尝试对小数进行四舍五入,而 SQL Server 中的舍入似乎只考虑舍入比例的最后一位数字之后的一位数字。

SELECT CAST(795.5921967249997 AS decimal(18,8))
--795.59219672
SELECT ROUND(795.5921967249997, 8)
--795.5921967200000

我正在寻找的是一个公平的四舍五入,它考虑了所有数字。在上面的示例中,我期望 3 作为第 8 位十进制数字。 我可以在不编写自己的函数的情况下做到这一点吗?

【问题讨论】:

  • "SQL Server 只考虑舍入比例的最后一位数字之后的一位数字"——通常是这样进行舍入的。如果你想建立自己的非标准roundig-rules,你必须自己实现它们。

标签: sql sql-server rounding


【解决方案1】:

如果您希望在该位置使用“3”,那么您正在更改舍入规则。您可以分两步完成:

SELECT CAST(CAST(795.5921967249997 AS decimal(18, 9)) as decimal(18, 8))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多