点X不NG
2018-06-25 06:07
采纳率: 51.5%
浏览 2.9k

LONG类型长值存储oracle数据库number字段中取值发现不正确

1.页面用户输入银行卡位数比较长,所以服务端用long类型装载。
当存入到oracle数据库中时,查看数据变成了科学记数法标记。(网上说没有指定oracle的number字段长度会就会科学计数超过8位还是9位)。然后问题来了.......
当取出库中字段去前端展示时候,发现最后四位都变成了0,有的是最后追加了10000。

例子:
原始值 123457689098221781
存到库中是科学记数法
再次取值 就成了 123457689098220000 或者 1234576890982210000
(奇怪的是导出excel时候,文件中的卡号都是正确的.....)

才疏学浅....请帮忙看看

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 菜o籽 2018-06-25 07:22
    已采纳

    每一个存放数据的地方,不管是数据库中表列,还是应用程序中界面UI,它在展示数据的时候都有长度属性的。就像你这个 long型的数字,有十几位长,在丢失精度的情况下,oracle肯定会用科学计数法的形式 保存。就像在 excel中新建标签页中 你输入18位身份证号,回车默认显示成6.xxxxxxxxxxx*10E2这种形式了。但是字符型的话就不会出现这种情况。就像1楼说的。原始存储类型定义成字符型的,需要在其他地方做数值运算是可以强制转换成数值型

    评论
    解决 无用
    打赏 举报
  • 查看更多回答(5条)

相关推荐 更多相似问题