如何在不使用math.round或%3f等方法的情况下截断数字? AND仅使用if语句而不能使用indexOf

时间:2013-10-26 23:35:12

标签: java decimal truncate

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个小数位来工作ex:(12.1我需要它显示12.100)或(12.11显示12.110) )

1 个答案:

答案 0 :(得分: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);
    }
}

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