使用特定小数点向上和向下舍入数字

时间:2014-10-09 04:41:32

标签: sql sql-server rounding floor ceiling

我正在使用SQL Server 2008 R2,我想找到具有特定小数点的向上和向下舍入值,如下所示:

例如:

  1. 如果我的值 1.27845 ,我想要2位小数的答案,那么我的回答应该是

    1. Rounding UP:1.28
    2. 向下舍入:1.27
  2. 如果我的值 33.33333 ,我想要2位小数的答案,那么我的答案应该是

    1. Rounding Up:33.34
    2. 向下舍入:33.33
  3. 如果我的值 1.27845 ,我想要3位小数的答案,那么我的回答应该是

    1. 舍入:1.279
    2. 向下舍入:1.278
  4. 如果我的值 33.33333 ,我希望答案有3位小数,那么我的答案应该是

    1. Rounding Up:33.334
    2. 向下舍入:33.333
  5. 我想要所有案例的共同解决方案。 感谢...

2 个答案:

答案 0 :(得分:1)

您可以将以下“偏移量”与FLOOR和CEILING一起使用

DECLARE 
    @digit int = 2,
    @value decimal(10,5)=1.27845
DECLARE
    @calc_scale int = POWER(10,@digit)

SELECT 
    CAST(FLOOR (@value * @calc_scale)/@calc_scale AS DECIMAL(10,5)) as down,
    CAST(CEILING (@value * @calc_scale)/@calc_scale AS DECIMAL(10,5)) as up

但是,目标数据类型将始终与查询中指定的一样(例如,精度编辑:上例中的比例为5)。 您无法动态更改输出中的位数,因为此比例取决于变量的数据类型。您可以将转换为VARCHAR数据类型并修剪不需要的数字,但我强烈反对它。

如果您只需显示大量数字,我建议在应用层修剪它。

答案 1 :(得分:0)

enter image description here

我无法添加我的代码继续收到此错误"提交答案时发生错误"所以添加为图片