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条)

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图