Java我需要三个小数位但不想舍入

时间:2018-02-04 17:14:53

标签: java

我发布了我的代码。我不想要我的回答。例: 在第二栏中,它应该是65.574,而不是65.580。

public class Exercise_06_09 {

    public static void main(String[] args) {

        System.out.printf("%-15s%-15s|    %-15s%-15s\n","Feet","Meters","Meters","Feet");
        System.out.println( String.format("%62s"," ").replace(' ', '-'));

        for (double m = 20, f = 1  ; f <=10; f++, m+=5) {           
            System.out.printf("%-15.1f%-15.3f|    %-15.1f%-15.3f\n", f, footToMeter(f), m, meterToFoot(m));
        }        
    }

    //Convert from meter to foot
    public static double meterToFoot(double meter) {
        return 3.279 * meter;
    }

    //Convert from foot to meter
    public static double footToMeter(double foot) {
        return  0.305 * foot;
    }    
}

这是我得到的输出

脚米|米脚

1.0 0.305 | 20.0 65.580
2.0 0.610 | 25.0 81.975
3.0 0.915 | 30.0 98.370
4.0 1.220 | 35.0 114.765
5.0 1.525 | 40.0 131.160
6.0 1.830 | 45.0 147.555
7.0 2.135 | 50.0 163.950
8.0 2.440 | 55.0 180.345
9.0 2.745 | 60.0 196.740
10.0 3.050 | 65.0 213.135

2 个答案:

答案 0 :(得分:1)

如果您不想舍入到某个数字,可以使用BigDecimal课程。

使用类似:

BigDecimal bigDecimal = new BigDecimal(3.279 * meter);

您将获得以下输出: 65.5799999999999982946974341757595539093017578125

现在将值转换为String并获取子串,其中结束索引是小数点后的小数点后3位。

答案 1 :(得分:0)

你可以乘以10 ^ n(n是要保留的数字量),然后除去小数。也许把它作为一个int。然后再将它除以10 ^ n。