1. 程式人生 > 其它 >java實現c#的math.Round的方法(處理原理:四捨六入五考慮,五後非零就進一,五後皆零看奇偶,五前為偶應捨去,五前為奇要進一)

java實現c#的math.Round的方法(處理原理:四捨六入五考慮,五後非零就進一,五後皆零看奇偶,五前為偶應捨去,五前為奇要進一)

 /**
     * 實現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); }