定义了一个double d = 5;
输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1
小数点后面没有数字则不显示,直接显示5.
如何做?最好不要是那种转化成字符判断处理的那种。
谢谢!!

解决方案 »

  1.   

    http://blog.csdn.net/APOLLO_TS/archive/2007/08/31/1766229.aspx
      

  2.   


    public static void main(String[] args) {
    double d = 7.0;
    if(d>(int)d && d<(int)d+1)
        System.out.println(d);
    else System.out.println((int)d);
    }
      

  3.   


    /**
     * 定义了一个double d = 5; 
       输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1 
       小数点后面没有数字则不显示,直接显示5. 
       如何做?最好不要是那种转化成字符判断处理的那种。
     * */
    package csdn.question.myanswer;public class TestDouble {

    private static double judge(double num) {
    int numInt = (int)num; //数num的整数部分
    double numDouble = num % numInt;//数num的小数部分

    return numDouble; 
    }

    // 判断小数部分,如果是0则显示整数;如果是大于0的小数这显示原数
    private static void showNum(double num) {
    double result = judge(num);
    if(result > 0) {
    System.out.println(num);
    } else {
    System.out.println((int)num);
    }
    }

    public static void main(String[] args) {
    double num1 = 2.1;
    double num2 = 3.0;

    showNum(num1);
    showNum(num2);
    }
    }
      

  4.   

    不要字符串判断处理?
    最后输出的时候用d.toString().replaceFirst("\\.0+", "")不好吗喵?
      

  5.   

    用原值减去这个值的整型
     public static void main(String[] args) {
            double d = 7.0;
            if(d-(int)d>0)
                System.out.println(d);
            else 
                System.out.println((int)d);
        }
      

  6.   

        public static void main(String[] args) {
            double d = 7.0;
            if(d>(int)d && d<(int)d+1)
                System.out.println(d);
            else System.out.println((int)d);
        }

    用原值减去这个值的整型 
    public static void main(String[] args) { 
            double d = 7.0; 
            if(d-(int)d>0) 
                System.out.println(d); 
            else 
                System.out.println((int)d); 
        } 
    觉得这2个算法简单哈,思路都是一样的。楼主不想转字符串可以用这2个方法!
      

  7.   

    取模
     public static void main(String[] args) {
            double d = 7.0;
            if(d>(int)d && d<(int)d+1)
                System.out.println(d);
            else System.out.println((int)d);
        }

    正则表达式
    d.toString().replaceFirst("\\.0+", "")
      

  8.   

    double d = 5.0;
    System.out.println(new BigDecimal(String.valueOf(d)).stripTrailingZeros());
      

  9.   

    给一个简单的解决办法,很直接,不需要任何判断:
    public class Test { public static void main(String[] args) {
    double a=5.2340;
    DecimalFormat df=new DecimalFormat("");
    System.out.println(df.format(a));
    }
    }
    输出为5.234  (后面的0没有了^_^)
    如果a=5,则输出为5,如果为5.4,则输出为5.4,非常符合楼主需求。
      

  10.   

    不好意思,拷贝测试程序的时候没有把import语句拷过来。
    在上面加上  import java.text.DecimalFormat;
      

  11.   


    public class IntTest
    {
    public static void main(String[] args)
    {
    double d=5.0;
    if(d>Math.floor(d))
    {
    System.out.println(d);
    }
    else
    {
    System.out.println((int)d);
    }
    }
    }
      

  12.   

    nice  学到好多东西呢。
      

  13.   

    格式化输出可以使用这个方法
    System.out.printf(String,Object...)
      

  14.   

    好.............
    package j2se.string;/**
     * 定义了一个double d = 5; 
    输出却是5.0,现在要求输出的时候小数点后面有数字则显示正常,如5.1 
    小数点后面没有数字则不显示,直接显示5. 
     * @author feng
     *
     */public class CsdnTwo {
    public void testDouble(double d){
    if(d>(int)d && d<(int)d+1){
    System.out.println(d);
    }else{
    System.out.println((int)d);
    }
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    CsdnTwo ct = new CsdnTwo();
    ct.testDouble(5.0);
    ct.testDouble(5.4);
    }}