select ROUND(1.000000000/74.000000*0.28338300000000, 6) from dual
大家看这条sql语句,在sqlplus里和plsql里的结果都是0.003829
但 select 1.000000000/74.000000*0.28338300000000 from dual 的结果却是0.0038295,按照这个结果四舍五入后应该是0.003830呀。
我在vc里double a1 = 1.000000000/74.000000*0.28338300000000 ;a1结果是0.0038295000000000,按照这个结果四舍五入也应该是0.003830,但为什么oracle数据库给的结果却是0.003829呢?我的oracle是9201的,在sql2000上的结果和oracle一样,这是什么道理?

解决方案 »

  1.   

    显然你是正确的,估计是oracle内部的错误,
    oracle10g仍旧如此,你把6改成7,回vc自己再舍一次吧。
      

  2.   

    测试和lz情况一样,估计是oracle的问题了
      

  3.   

    不是这样的,我觉得可能是round函数实现时的计算顺序引起的,你试一下
    select round(1.000000000*0.28338300000000/74.000000,6) from dual
    看看这个值是多少?