public class test { /** * @param str * 处理参数 * @param num * 保留小数位数 * @return 返回值 */ public static String RoundOf(String str, int num) { if (str.indexOf(".") > -1) { String str1 = str.substring(str.indexOf(".") + 1, str.indexOf(".") + 1 + str.length() - (str.indexOf(".") + 1)); int i = 0; if (num < 0) num = 0; // 如果指定要保留的小数位小于零,则初始化为零 if (str1.length() > num) { if (Integer.valueOf(str1.substring(num, num + 1)) > 4) { int val = 0; val = Integer.valueOf(str1.substring(0, num + 1)) + (10 - Integer.valueOf(str1 .substring(num, num + 1))); if (String.valueOf(val).length() > (num + 1)) { i = 1; str1 = String.valueOf(val).substring(1, num + 1); } else { str1 = String.valueOf(val).substring(0, num); } } else { str1 = str1.substring(0, num); } if (str.indexOf(".") > 0) { String str2 = str.substring(0, str.indexOf(".")); if (num > 0) { str = String.valueOf(Integer.valueOf(str2) + i) + "." + str1; } else { str = String.valueOf(Integer.valueOf(str2) + i); } } else { if (num > 0) { str = String.valueOf(i) + "." + str1; } else { str = String.valueOf(i); } } } else if (str1.length() < num) { for (int n = 0; n < (num - str1.length()); n++) { str = str + "0"; } } } return str; } public static void main(String[] args) { test test=new test(); System.out.println(test.RoundOf(String.valueOf(3.15965), 2)); } }