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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘