/**
* 实现C#的math.Round的方法
* 四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一
* Math.Round(3.45, 1) 3.4
* Math.Round(3.35, 1) 3.4
* Math.Round(3.45222, 1) 3.5
*
* @param d ex:89.7546897546897500
* @param i
* @return
*/
public static Double getCShareMathRound(Double d, int i) {
String dd = String.valueOf(d);
if (dd.indexOf(".")<0) {
return d;
}
if (dd.substring(dd.indexOf(".") + 1).length() < i) {
String format = String.format("%." + i + "f", d);
return Double.parseDouble(format);
}
int length_doty = Integer.parseInt(dd.substring(dd.indexOf(".") + i + 1, dd.indexOf(".") + i + 2));
// if (dd.substring(dd.indexOf(".") + i + 1).equals(""))
if (length_doty == 5) {
if (dd.substring(dd.indexOf(".") + 1).length() > i + 1) {
String format = String.format("%." + i + "f", d);
return Double.parseDouble(format);
}
int check1 = Integer.parseInt(dd.substring(dd.indexOf(".") + i, dd.indexOf(".") + i + 1));
if (check1 % 2 == 1) {
String format = String.format("%." + i + "f", d);
return Double.parseDouble(format);
}
return Double.parseDouble(dd.substring(0, dd.indexOf(".") + i + 1));
}
String format = String.format("%." + i + "f", d);
return Double.parseDouble(format);
}