【问题标题】:Rounding down DECIMAL(14,3) to third decimal digit in SQL 2008在 SQL 2008 中将 DECIMAL(14,3) 舍入到小数点后三位
【发布时间】:2010-11-21 10:48:49
【问题描述】:

我必须将类型为DECIMAL(14,3) 的所有传入数据向下舍入,其中最后一位是小数点后三位。即:

100; 100.0; 100.00; 100.000 -> 100
100.2; 100.02; 100.20; 100.22 -> 100.xx

但是

100.221 -> 100.22
100.229 -> 100.22

我可以使用哪个 SQL 运算符检查十进制数字除法的余数是否大于零?

【问题讨论】:

    标签: sql tsql sql-server-2008 operators


    【解决方案1】:

    我可以使用哪个 SQL 运算符来检查 十进制除法的余数 数字大于零?

    我不确切知道你想用它实现什么,但如果你想要一种计算小数余数的方法,% (Modulo) 就是方法。它提供第一个数值表达式除以第二个数值表达式后的整数余数。所以,你可以这样做

    1) SELECT 100.229 % 1;
    GO

    给出0.229 作为结果。

    2) SELECT (100.229 * 100) % 1;
    GO

    给出0.900 作为结果。那里有十进制除法的余数。

    但是如果你想截断,你可以按照David B的建议使用ROUND()来截断:

    SELECT ROUND(100.221, 2, 1); 
    GO 
    SELECT ROUND(100.229, 2, 1); 
    GO
    

    【讨论】:

      【解决方案2】:

      http://msdn.microsoft.com/en-us/library/ms175003.aspx

      参见章节:使用舍入截断

      【讨论】:

        猜你喜欢
        • 2014-06-28
        • 2012-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多