Oracle奇怪的问题 最近在项目中遇到了一个奇怪的问题,我在做缴费的时候给用户交了100,但是存入到数据库的时候有个时候总差那么一点,比如说99.99,99.98这样的情况都存在,大家有没有遇到过呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 真奇怪,你是怎么插入的?是直接用SQL语句,还是用的存储过程呢?那个字段的类型是什么? 我是在存储过程里插入的,在插入之前的这个值,是和一个number(16,2)型的数据做过减法。 单纯的insert 100 到数据库number字段中,没遇到但是如果计算后再插入数据库可能会有1分钱的情况,我们系统在月结算时候,我遇到过金额少1台币的情况是因为number型的数字Java端程式对于正负情况 round的不一样照成 我的处理都是在oracle里做的也没有用到round函数急死我了我日。。 和一个number(16,2)型的数据做过减法。估计是这个引起的 你这个具体是怎么运算的? overpayAmt := overpayAmt + v_cur_pay.amount - v_cur_pay.assign_amt;overpayAmt number(16,2);v_cur_pay.amount number(16,2);v_cur_pay.assign_amt number(16,2);初始overpayAmt oracle系统的默认值v_cur_pay.amount存的是100.00v_cur_pay.assign_amt 存的是0.00使用上面的等式后overpayAmt 变成了99.99 有个疑问,如果初始overpayAmt oracle系统的默认值那就应该是NULL,因为NULL和其他数值进行计算都是NULL,也不应该是99.99。建议LZ在代码里加上log或dbms_output,看看运行时的值是多沙。有时很怪的问题其实就是bug。 ORACLE中同一张表有的字段中文乱码有的显示正常 oracle高级查询问题 请问下单机独立ORACLE 为什么备份要连接到ORACLE MANGAGEMENT SERVER? 数据类型转换 cursor问题 中文问题..............wating......... VC6.0 用ADO连Oracle数据库遇到的问题。 在线等待...... oracle 数据库 求一个sql pl/sql 远程连接的问题 请教高手 dblink远程访问出错
但是如果计算后再插入数据库可能会有1分钱的情况,我们系统在月结算时候,我遇到过金额少1台币的情况
是因为number型的数字Java端程式对于正负情况 round的不一样照成
估计是这个引起的 你这个具体是怎么运算的?
v_cur_pay.amount number(16,2);
v_cur_pay.assign_amt number(16,2);初始overpayAmt oracle系统的默认值
v_cur_pay.amount存的是100.00
v_cur_pay.assign_amt 存的是0.00
使用上面的等式后
overpayAmt 变成了99.99
有个疑问,如果初始overpayAmt oracle系统的默认值
那就应该是NULL,因为NULL和其他数值进行计算都是NULL,也不应该是99.99。
建议LZ在代码里加上log或dbms_output,看看运行时的值是多沙。有时很怪的问题其实就是bug。