有一类型为number(16)的字段,在执行select操作时出现数据精度损失,例如有一表中有一个aaa字段类型为number(16)执行
insert into nl_test values(1234567890123456)
insert into nl_test values(1234567890123458)
后执行select操作查询出的数据结果都是
1.23456789012346E15
1.23456789012346E15
但是调用to_char后能得到正确的结果,如果需要保留number数据类型,应如何操作?
在Proc程序中遇到了这个问题,请诸位大虾指教,多谢!

解决方案 »

  1.   

    你指定的number(16)超过了存储的长度,
    加长number的precision或者不指定precision
      

  2.   

    这个不是显示的问题,我在proc中对这些数值进行了输出,得到的结果全都是1234567890123460。
      

  3.   

    number(16)没有超过存储长度啊,number最长不是可以支持到32吗?
      

  4.   

    如果我执行select to_char(aaa) from test 查到的结果就是
    1234567890123456
    1234567890123458说明存储到库里的数据应该没有问题啊,为什么select出来的数据就不对了呢?