0

到目前为止,我需要对我输入的数字进行四舍五入,并在没有这些方法的情况下将其保留到小数点后 3 位。

    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");
    }       

有了上面的内容,它将适用于任何输入,除了小数点后 2 位的输入,如 12.34 。如果我输入 12.34 并显示 12.340,如何使它工作?

4

3 回答 3

0

那这个呢?适用于给定的输入

public static String truncate(Double a, int digits) {
    String[] values = a.toString().split("\\.");
    String integer = values[0];
    String decimal = values[1];


    if (decimal.length() < digits) {
        int n = digits - decimal.length();
        for (int i = 0; i < n; i++) {
            decimal += "0";
        }
        return integer + "." + decimal;
    }
    return integer + "." + decimal.substring(0, digits);

}

public static void main(String[] args) {
    System.out.println(truncate(1.0, 7));
    System.out.println(truncate(1.23719273, 4));
    System.out.println(truncate(1d, 1));
}

出去

1.0000000
1.2371
1.0
于 2013-10-26T21:58:57.187 回答
0

您可以像这样使用 printf 方法:

System.out.printf("result = %.3f",number);

编辑(不使用printf格式说明符)

void floatTruncate(float val){
        float a = val;
        String result = a + "";

        int index = result.indexOf(".");
        int zeroes = result.length() - 1 - index;

        zeroes = 3 - zeroes;

        for (int i = 1; i <= zeroes && zeroes < 3; i++) {
            result = result + "0";
        }

        System.out.println("new result = " + result);

}

编辑2:(如果你只想保留3个小数位,如果你的输入就像number = 22.34567f你想要输出一样,22.345那么使用这个

     void floatTruncate(float val) {
            float a = val;
            String result = a + "";

            int index = result.indexOf(".");
            int zeroes = result.length() - 1 - index;

//use this logic if ur logic is to keep only 3 decimal places 
            if(zeroes>3){
                result = result.substring(0, index+4);
            }
            zeroes = 3 - zeroes;

            for (int i = 1; i <= zeroes && zeroes < 3; i++) {
                result = result + "0";
            }

            System.out.println("new result = " + result);
        }

样本输出

a = 22.3f -> 22.300
a = 22.34f -> 22.340
a = 22.345f -> 22.345
a = 22.34567f -> 22.345
于 2013-10-26T21:33:59.683 回答
0

尝试这样的事情(截断数字):

number *= 1000.0;
if (((int) number) % 100 == 0) {
    System.out.println((number / 1000.0) + "00");
} else if (((int) number) % 10 == 0) {
    System.out.println((number / 1000.0) + "0");
} else {
    System.out.println(number / 1000.0);
}
于 2013-10-26T21:51:43.133 回答