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)
为什么?????????????????