sql - SQL Server 中的小数点四舍五入

标签 sql sql-server rounding

我有一个包含数字数据(浮点)的列,并且需要仅对小数值进行四舍五入。

    Actual Value  Rounded Value
    2370.09 -->   2370.10
    2370.07 -->   2370.08
    2370.05 -->   2370.06
    2370.01 -->   2370.02
    2370.02 -->   2370.02
    2370.04 -->   2370.04
    2370.06 -->   2370.06
    2370.08 -->   2370.08

如果小数值(句点后)为奇数,则应增加 0.01;如果为偶数,则该值不会发生变化。

我尝试过SELECT ROUND(实际值, 1)

我怎样才能做到这一点?

最佳答案

基于 @scsimon 提供的其他答案中的模数示例,您可以在没有如下 case 语句的情况下执行此操作:

DECLARE @t TABLE
(
    n numeric(10,2) NOT NULL
);
INSERT INTO @t (n)
VALUES (2370.09)
    , (2370.07)
    , (2370.06)
    , (0)
    , (1.01)
    , (1.09)
    , (1.9)
    , (9999.99);

SELECT (t.n + (t.n % 0.02))
FROM @t t;
╔══════════════════╗
║ (No column name) ║
╠══════════════════╣
║          2370.10 ║
║          2370.08 ║
║          2370.06 ║
║             0.00 ║
║             1.02 ║
║             1.10 ║
║             1.90 ║
║         10000.00 ║
╚══════════════════╝

关于sql - SQL Server 中的小数点四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52210936/

相关文章:

MYSQL - 如何获取每条记录的最大值?

Mysql 字符串索引

sql-server - 抑制SQL Server SSDT中的一些警告

sql - 如何从一列中获取不同的数据

php - 如何使用 Ajax 从 SQL Jquery for DataTables 获取数据

sql-server - 在 SQL Server 2008 中使用条件更新行

向上舍入和向下舍入 R

c++ - 计算平均值时的舍入误差

c++ - 除法后的 OpenCv 回合

sql - 如何在 SQL Developer Oracle 中不使用 MAX、LIMIT 或 ORDER BY 的情况下找到 Product 表中最昂贵的产品?