select    t.price * t.count  result  from t
我想知道计算结果的的情况,计算结果最大能表示多少位数,小数位数等,误差等。越详细越好

解决方案 »

  1.   

    计算结果的精度应该与数据类型有关系。
    number目前是精度最高的类型吧,b_float,b_double都没它精度高。
      

  2.   

    t.price,t.count 你的这两个是什么类型咯?
    由这个字段决定的,不过你也可以对result 这个设置格式
    --例如
    SQL> col newcol format 9999999999999999.99999999999;
    SQL> select sal,sal*0.323233432 newcol from emp where rownum<3;       SAL                        NEWCOL
    ---------- -----------------------------
           800               258.58674560000
          1600               517.17349120000
    --或者用to_number()
    SQL> select sal,to_number(sal*0.32324234,'9999999999999999.99999999999') from emp where rownum<3;       SAL TO_NUMBER(SAL*0.32324234,'9999999999999999.99999999999')
    ---------- --------------------------------------------------------
           800                                               258.593872
          1600                                               517.187744
      

  3.   

    t.price 是Number(10,2),t.count是number  . number(x,y)*number(x,y)和 number * number  和 number  *number(x,y) 的计算结果精度分别是什么啊
      

  4.   

    --好像这个跟环境设置有关,我这边的默认是保留3为小数
    --不过你可以用to_number()设置你想要的格式 2楼的
    SQL> select 23.323*23423.3423432 from dual;23.323*23423.3423432
    --------------------
              546302.613SQL> col newcol format 9999999999999999.99999999999999;
    SQL> select 23.323*23423.3423432 newcol from dual;                          NEWCOL
    --------------------------------
               546302.61347045360000
      

  5.   

    这东西跟你的price 的设计有关
    要是count是个整零的数 你的结果就没有小数位;
    不是的话 小数位就是你的price有几位小数就几位