日期:2014-05-18  浏览次数:20718 次

erp开发中遇到的奇怪问题,高手帮解决
我们单位使用的框架是jbuilder+weblogic+oracle

我已经把修改后的程序发布到应用服务器上~
      //je=rs.getDouble( "je ");           //原方法已注释
      je=Double.parseDouble(con.decimalFormat(rs.getDouble( "je ")));   //新方法,就是比原方法的je多进行了取两位小数操作.

当程序走到这个方法的时候,大部分时间里都是按新方法做的~

但有极个别的情况下,还按注释的原方法去做

一开始怀疑weblogic服务器上内存中一直保存着原程序的方法~

所以已经在weblogic里将程序卸掉,在重新发布.问题依旧存在~

请高人指点~



------解决方案--------------------
class类是否是新编译的
------解决方案--------------------
当程序走到这个方法的时候,大部分时间里都是按新方法做的~
但有极个别的情况下,还按注释的原方法去做。
---------------------------
还有这种事情?
可能是jbuilder编译class的问题,不过也不会出现:“大部分时间里都是按新方法做,但有极个别的情况下,还按注释的原方法去做。”的情况。
lz把jbuilder生成的该java文件的class文件删掉,再重新编译一下试试。
------解决方案--------------------
是不是打成jar包了?可能执行的不是你的代码
------解决方案--------------------
那就是这里出问题了:con.decimalFormat
------解决方案--------------------
这个问题好像是java的Decimal类的问题,我也曾经在我们的系统的结算精确小数位数的时候遇到过类似的问题,建议自己写一个Format方法来做这个小数的取值,当时我们事自己写的方法,不过一时也没有源码了,很简单的!
------解决方案--------------------
用JB的话,你说的那2种编译过程都是OK的。
------解决方案--------------------
Double.parseDouble

是有可能把1.00解析成1.000001的

建议你换成BigDecimal类

不要用DOUBLE
------解决方案--------------------
应该是某些具体的数据值导致的现象,跟注不注释没关系,即使删掉注释也会一样.

如果数据不再用于计算(否则就不该截了,会影响计算精度)只用于显示,建议转换成字串再截串,这样可杜绝一切特殊值现象.

------解决方案--------------------
楼上说的有道理。。