例如:public String round(double v,int num){
}
v是要计算的数,num是保留的位数
例如传:12.123,2 则返回12.12 传12 则返回12
传12.123,3 则返回12.123 谢谢!

解决方案 »

  1.   

    我有个方法,可以-->String在通过(好象是你回去看一下)indexOf()查找"."
    若返回的不是-1
    再用subString()方法截取"."以后你要的长度
      

  2.   

    public String round(double v,int num){
            String value=""+v;
            int index=value.indexOf(".");
            if(index!=-1){
                   if(num+index<=value.length())
                           {
                           String getString=value.subString(0,num+index+1);
                           return getString; 
                           } 
             }
            return value;
    }
      

  3.   

    public String round(double v,int num){
        String fmt = "0000000000000000";//16位
        fmt = num>0?"0."+fmt.substring(0,num):"0";
        DecimalFormat df = new DecimalFormat(fmt);
        return(df.format(v));
    }
      

  4.   

    根据楼主的要求,写了一个,测试没有问题,楼主结贴吧
    import java.text.*;
    public class DoubleFormat
    {
    public static void main(String[]args)
    {
    DoubleFormat t = new DoubleFormat();
    System.out.print(t.doubleOutPut(12.369,2));
    }
    public String doubleOutPut(double v,Integer num)
    {
    if (v == Double.valueOf(v).intValue())
    return Double.valueOf(v).intValue()+"";
    else
    {
    NumberFormat formatter = NumberFormat.getNumberInstance();
    formatter.setMaximumFractionDigits(2);
    formatter.setMinimumFractionDigits(2);
    return formatter.format(v);
    }

    }
       
    }
      

  5.   

    上面的不是有个变量没有代进去.
    这下好了.
    import java.text.*;
    public class DoubleFormat
    {
    public static void main(String[]args)
    {
    DoubleFormat t = new DoubleFormat();
    System.out.print(t.doubleOutPut(12.369,2));
    }
    public String doubleOutPut(double v,Integer num)
    {
    if (v == Double.valueOf(v).intValue())
    return Double.valueOf(v).intValue()+"";
    else
    {
    NumberFormat formatter = NumberFormat.getNumberInstance();
    formatter.setMaximumFractionDigits(num);
    formatter.setMinimumFractionDigits(num);
    return formatter.format(v);
    }

    }
       
    }
      

  6.   

    To: wuheng66888(吴恒) 你好! 怎么把保留的小数点四舍五入呢?如12.345,2 想得到结果12.35 能再帮我想一下么?谢谢啊!
    import java.text.*;
    public class DoubleFormat
    {
    public static void main(String[]args)
    {
    DoubleFormat t = new DoubleFormat();
    System.out.print(t.doubleOutPut(12.345,2));
    }
    public String doubleOutPut(double v,int num)
    {
    if (v == Double.valueOf(Double.toString(v)).intValue())
    return Double.valueOf(Double.toString(v)).intValue()+"";
    else
    {
    NumberFormat formatter = NumberFormat.getNumberInstance();
    formatter.setMaximumFractionDigits(num);
    formatter.setMinimumFractionDigits(num);
    return formatter.format(v);
    }

    }
       
    }
      

  7.   

    To: javafreshfish() 你好! 你的这个方法 若传12,3 则返回12.0,期望结果是12 传12,2则抛异常,能再帮我看看么?谢谢!
    public class DoubleFormat {
    public static void main(String[] args) {
    DoubleFormat t = new DoubleFormat();
    System.out.print(t.round(12, 2));
    } public String round(double v, int num) {
    String value = "" + v;
    int index = value.indexOf(".");
    if (index != -1) {
    if (num + index <= value.length()) {
    String getString = value.substring(0, (num + index + 1));
    return getString;
    }
    }
    return value;
    }
    }
      

  8.   

    public class Test {
        public static void main(String[] args) {
            Test t = new Test();
            System.out.print(t.round(12.345, 2));
        }    public String round(double v, int num) {
            String multipliedValue = Math.round(v * Math.pow(10, num)) + "";
            String outputValue = multipliedValue.substring(0
                , multipliedValue.length() - num) ;
            outputValue += ".";
            outputValue += multipliedValue.substring(outputValue.length() - 1
                ,multipliedValue.length());
            return outputValue;
        }
    }
      

  9.   

    public class Test {
        public static void main(String[] args) {
            Test t = new Test();
            System.out.print(t.round(12.345, 0));
        }    public String round(double v, int num) {
            if (num == 0) {
                return String.valueOf(Math.round(v));   
            }
            String multipliedValue = Math.round(v * Math.pow(10, num)) + "";
            String outputValue = multipliedValue.substring(0
                , multipliedValue.length() - num) ;
            outputValue += ".";
            outputValue += multipliedValue.substring(outputValue.length() - 1
                ,multipliedValue.length());
            return outputValue;
        }
    }
      

  10.   

    public class 测试数值{
        
        public  static String round(double a,int number){
            int 整数=(int)a;
            if( a==整数||number==0) return  ""+整数;
            
            String s=String.valueOf(a);
            int len=s.length();
            int index=s.indexOf(".");
            String 整数部分=s.substring(0,index);
            
            if(index+number<len) {
                String 小数部分=s.substring(index,index+number+1);
                return 整数部分+小数部分;
            }
            System.out.println("保留的位数太多了,我将返回整数部分");
            return 整数部分;
        }
        public static void main(String[]args){
            String s= round(12,2);
            System.out.println(s);        
        }   
        
        
    }