yybing110 2016-05-04 11:24 采纳率: 0%
浏览 2588
已采纳

关于JAVA四舍六入五成双不同JDK版本结果不一致的问题

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class Utils {

public static String getStrFromDb(Double db,Integer len){
    String st="#0.";
    if(len==null || len==0) {
        len = 0;
        st="#0";
    }

    for(int i=0;i<len;i++){
        st+="0";
    }
       NumberFormat numberFormat = new DecimalFormat(st);
    numberFormat.setRoundingMode(RoundingMode.HALF_EVEN);
    return   numberFormat.format(db);
}


public static String getJspValue(double db,Integer len ){
         if(db==0){
             return    getStrFromDb(0.0,len);
         }
        db=Double.parseDouble(getJspValueNoXy(db,len+1));
         String retdb=getStrFromDb(db,len) ;
         if(Double.parseDouble(retdb)==0){
             return   getJspValueNoXy(db,len+1);
         }
          return  retdb;
}


public static String getJspValueNoXy(double db,Integer len ){
    if(db==0){
        return    getStrFromDb(0.0,len);
    }


    DecimalFormat formater = new DecimalFormat();

    formater.setMaximumFractionDigits(len);
   formater.setGroupingSize(0);
    formater.setRoundingMode(RoundingMode.FLOOR);

    String retV= formater.format(db) ;
    if(Double.parseDouble(retV)==0){
        return    getJspValueNoXy(db,len+1);
    }
    return    getStrFromDb(Double.parseDouble(retV),len);

}

public static void main(String arg[]){
System.out.println("1-1-4---");
System.out.println(Utils.getJspValue(0.025,2));
System.out.println(Utils.getJspValue(0.015,2));
System.out.println(Utils.getJspValue(0.005,2));

}
}

运行结果 0.02 0.02 0.005 符合要求 JDK版本
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)

服务器运行结果 0.03 0.01 0.01 结果不正确 JDK版本
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

为什么?????????????????

  • 写回答

3条回答

  • yybing110 2016-05-06 08:26
    关注

    已解决 是JDK8的一个漏洞 官方以更新 从新下载JDK解决问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊