我在表中定义了一个AAA字段,类型是number(38,20)向AAA中插入0.33333查询时 AAA的值 不是 0.333330000000000000
               而是0.333329999999999936非常奇怪,不知道为什么, 请各位大侠帮忙。
(0.66666也有同样的问题。)

解决方案 »

  1.   


      CREATE TABLE "SCOTT"."NUM_TAB" 
       ( "A" NUMBER(38,20)
       )TABLESPACE "ORCLU_TEST_TBS" ; insert into num_tab values(0.33333);
    SQL> select * from num_tab;         A
    ----------
        .33333SQL>
      

  2.   

    你是不是在java中BigDecimal取到的值??
    如果是,把BigDecimal设置好精度...
      

  3.   

    我的建表语句
    create table TEST
    (
      AAA NUMBER(38,20)
    )
    tablespace USERS
      pctfree 10
      initrans 1
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );插入语句insert into test values(0.33333);查询语句select * from test查询结果0.333329999999999936我用的plsql developer编辑,和一楼的做法应该是一样的。
    但查询结果却不同。
      

  4.   

    --试试这个
    select to_char(AAA,'0.999999999999999999999999999999') from test
      

  5.   

    我这里和楼主出现了同样的问题
    但是当我把tool-->preference-->sql window-->number layout
    改成left aligned 时,数字显示正常了。
    不知道为什么?
      

  6.   

    那个只是去掉了格式化,内部存储应该是一样的东西。
    select Dump(aaa) from test22;
    这个在修改前后是一样的。