小弟目前在统计一个数量情况如下
    A 所有总数量----------------------------------------总合=所有三级分类的合
       AA 一级分类--------------------------------------一级分类合=AAA+AAB
          AAA 二级分类----------------------------------二级分类合=AAAA+AAAB
              AAAA 三级分类
            AAAB  三级分类
          AAB 二级分类----------------------------------二级分类合=AABA+AABB
            AABA  三级分类
            AABB  三级分类
       AB 一级分类--------------------------------------一级分类合=ABA+ABB
          ABA 二级分类----------------------------------二级分类合=ABAA+ABAB
              ABAA 三级分类
              ABAB  三级分类
          ABB 二级分类----------------------------------二级分类合=ABAA+ABAB
            ABBA  三级分类
            ABBB  三级分类这样对结果进行四舍五入的话,得到的A的结果和AA+AB的结果有一个差值,因为我做的是财务方面的东西,我就是想请教各位前辈我怎么样才能把这个差值做到最小,甚至没有差值呢?

解决方案 »

  1.   

    上面表述有误
    小弟目前在统计一个数量情况如下 
        A 所有总数量----------------------------------------总合=所有三级分类的合 
          AA 一级分类--------------------------------------一级分类合=AAAA+AAAB+AABA+AABB 
              AAA 二级分类----------------------------------二级分类合=AAAA+AAAB 
                  AAAA 三级分类 
                AAAB  三级分类 
              AAB 二级分类----------------------------------二级分类合=AABA+AABB 
                AABA  三级分类 
                AABB  三级分类 
          AB 一级分类--------------------------------------一级分类合=ABAA+ABAB+ABAA+ABAB 
              ABA 二级分类----------------------------------二级分类合=ABAA+ABAB 
                  ABAA 三级分类 
                  ABAB  三级分类 
              ABB 二级分类----------------------------------二级分类合=ABAA+ABAB 
                ABBA  三级分类 
                ABBB  三级分类 这样对结果进行四舍五入的话,得到的A的结果和AA+AB的结果有一个差值,因为我做的是财务方面的东西,我就是想请教各位前辈我怎么样才能把这个差值做到最小,甚至没有差值呢?
      

  2.   

    --用sqlplus执行一下:select round(123.4567,2) from dual;
      

  3.   

    你这个“差值”是正常的,不需要解决。如果数据是随机分布的,样本越大,这个差值越趋近于零。
    除非数据分布严重倾斜,导致大部分分级汇总结果被舍(<0.05),或,大部分汇总结果被入(>0.05)。此2种情况对于一般的财务数据,几乎不可能出现。
    如果你的确遇到了差值较大的情况,建议你将小数部分增加一位,一般来讲应该可以解决问题。
      

  4.   

    很明显用三楼的round(值,保留的位数)你保留小数点后面位数越多越精确