题目:完毕这种方法的代码实现 public static String round (String arg1, int arg2)
參数 arg1:表示等待被处理的数据:如:"100.286"
參数 arg2:处理后保留的个数位数:如:2
返回值:对arg1保留arg2位小数位数而且四舍五入后的结果值。如:“100.29”
要求不能使用JDK中的数值类Class的现有四舍五入方法。
实现:
public static String round(String arg1, int arg2) { try{ double arg1Value = Double.parseDouble(arg1); }catch (Exception e) { return null; } if(arg2 <= 0){ return null; } if(arg1.indexOf(".")<0){ return arg1; } int pointPos = arg1.indexOf(".")+1; if(pointPos+arg2+1>arg1.length()){ return arg1; } int value1 = Integer.parseInt(arg1.substring(pointPos+arg2, pointPos+arg2+1)); System.out.println(value1); if(value1<5){ return arg1.substring(0, pointPos+arg2); }else{ double value2 = Double.parseDouble(arg1.substring(0, pointPos+arg2)); if(value2<0){ value2=value2-Math.pow(0.1, arg2); }else { value2=value2+Math.pow(0.1, arg2); } return String.valueOf(value2); } }
对于题目中给出的样例进行測试
System.out.println(round("100.286", 2));
执行结果:100.29
对于负数进行測试
System.out.println(round("-100.286", 2));
执行结果:-100.29
对于非数值字符串进行測试
System.out.println(round("a10b0.286", 2));
执行结果:null
总结
该方法是对java中Math类下的round方法的重写,可能有不完备的地方或者有错误的地方,希望各位大牛能指教,望大牛能给出好的建议,先谢啦。