在int表达式中使用强制转换将结果转换为double

时间:2020-04-30 10:41:44

标签: java methods casting

据我所知,Java具有自动转换功能,因为不会丢失数据,因此可以将兼容的数据类型从较小的转换为较大的数据,但是在我的JDK 8初学者指南的测试程序之一中,是以这种方式使用转换的。 燃料需求的方法是有问题的。 我知道它可以在不进行强制转换的情况下打印出相同的双重结果,所以为什么需要这样做?是吗?


class Vehicle {
    int passengers;
    int fuelcap;
    int mpg;

    Vehicle (int p, int f, int m) {
        passengers = p;
        fuelcap = f;
        mpg = m;
    }

    int range() {
        return mpg * fuelcap;
    }

    double fuelNeeded(int miles) {
        return (double) miles / mpg;
    }

}

public class CompFuel {

    public static void main(String[] args) {

        Vehicle minivan = new Vehicle(7, 16, 21);
        Vehicle supra = new Vehicle(2, 14, 12);
        double gallons;
        int dist = 252;

        gallons = minivan.fuelNeeded(dist);
        System.out.println("To go " + dist + " miles, minivan needs " + gallons + " gallons of fuel");

        gallons = supra.fuelNeeded(dist);
        System.out.println("To go " + dist + " miles, supra needs " + gallons + " gallons of fuel");

    }

}

1 个答案:

答案 0 :(得分:1)

如果尝试删除强制类型转换,并尝试类似1/2的操作,则返回值为0.0。使用强制转换时,返回值为0.5

由于强制转换而存在差异-将变量miles显式转换为double使整体除法成为doubleint之间的除法,这使我们double值。不进行强制转换将导致int划分。