create table tb_pinfo
(
pid number,
pname varchar2(200),
dprice number(19,2),
cprice number(19,2)
);insert into tb_pinfo values(1,'lenovo g470',99999999999999999,0);插入之后,查询发现插入后的数据,和插入时的数据明显不一致
大家都遇到这种鸟问题吗?如何解决
(
pid number,
pname varchar2(200),
dprice number(19,2),
cprice number(19,2)
);insert into tb_pinfo values(1,'lenovo g470',99999999999999999,0);插入之后,查询发现插入后的数据,和插入时的数据明显不一致
大家都遇到这种鸟问题吗?如何解决
(
pid number,
pname varchar2(200),
dprice number(20,2),cprice number(19,2)
);这样就没有问题了
其结果竟然是:100000000000000000.00
很明显不对,老夫原以为只有java才会这样,没想到,数据库也是这样
number类型的存储机制number(p,s)
p:1~38
s:-84~127p>0,对s分2种情况:1. s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。2. s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|
和你这个是同样的道理。。( 如果你想看到小数点后的值的话。你可以to_char() )你换个客户端就可以了。我换的是 cse 工具。。
select 9999999999999999999 from dual;