1
if(number !=(int)number){           
    number*=1000;      
    number=(int)number;  
    number=(double)number; 
    number/=1000;  
    System.out.println("-"+ number);         
}
if(number ==(int)number){       
    System.out.println("-"+ number + "00");
}     

//这部分只有当我输入一个小数点后3位或更多的数字时才有效,我需要1个小数位或2个小数位才能工作例如:(12.1我需要它来显示12.100)或(12.11来显示12.110)

4

1 回答 1

0

如果打印它是唯一需要的,这应该可以工作。如果您需要返回一个值,您始终可以将其存储为字符串。

public static void myFormat(double number){
    String sign = "";
    if (number < 0) { sign = "-";}

    int decimalPart, wholePart;

    if(number == (int)number){ // number is an integer
        System.out.println( (int)number+".000");
    }
    else { // number has some decimal components
        int myNewNum = (int)(number * 1000); // get the portions we need
        decimalPart = myNewNum - ( (int)number * 1000 );
        wholePart = (myNewNum - decimalPart) / 1000;

        //make whole and decimal part positive for formatting purposes
        if (decimalPart < 0) { decimalPart *= -1; }    
        if (wholePart < 0) { wholePart *= -1;}

        System.out.println(sign + wholePart + "." + decimalPart);
    }
}

这是基于您不能使用任何外部库或方法的假设。它很冗长,但数学是正确的。

于 2013-10-28T20:10:12.347 回答