java實現c#的math.Round的方法(處理原理:四捨六入五考慮,五後非零就進一,五後皆零看奇偶,五前為偶應捨去,五前為奇要進一)
阿新 • • 發佈:2021-12-31
/** * 實現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, inti) { 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); }