免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2245 | 回复: 6
打印 上一主题 下一主题

[数据库] oracle 精度问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-22 15:47 |只看该作者 |倒序浏览
当我们一个数值够大,千万亿

1000000000000000.00000
如果我update  =1000000000000000.32
实际结果还是 1000000000000000.00000
如果 原值是  1000000000.000我把他改为 update  1000000000.321 结果就是 1000000000.321

请问高手这是什么原因,还是oracle精度处理模式特殊。。。?

论坛徽章:
0
2 [报告]
发表于 2013-03-22 17:29 |只看该作者
desc看一下这个表,这个字段的类型

论坛徽章:
0
3 [报告]
发表于 2013-03-22 18:05 |只看该作者
字段可以写很大
number(28,6)

装得下这么大数,但是精度就出问题了

论坛徽章:
0
4 [报告]
发表于 2013-03-25 09:55 |只看该作者
LZ是不是可以把操作步骤及显示贴出来,
上面的描述不是太清楚

论坛徽章:
0
5 [报告]
发表于 2013-03-25 10:40 |只看该作者
比如
tab 的字段 balance    number(38,6)   ;  ---就是我们的金额字段

update tab
    set balance =1000000000000000.32
where id=xxxx;

论坛徽章:
0
6 [报告]
发表于 2013-03-25 10:41 |只看该作者
比如
tab 的字段 balance    number(38,6)   ;  ---就是我们的金额字段

update tab
    set balance =1000000000000000.32
where id=xxxx;

结果去查看balance 他不是 1000000000000000.32 ,
如果

论坛徽章:
0
7 [报告]
发表于 2013-03-25 10:43 |只看该作者
比如
tab 的字段 balance    number(38,6)   ;  ---就是我们的金额字段

update tab
    set balance =1000000000000000.32
where id=xxxx;

结果去查看balance 他不是 1000000000000000.32 ,而是1000000000000000.00000 或者其他值,当然误差就在小数位的第一第二位上。
如果:
update tab
    set balance =100000000.32  ---把数值缩小
where id=xxxx;
这样就对了,去slelect的时候就是我们想要的值 100000000.32
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP