Java 当两个Double除法并将Double商乘以Int时,如何将Double转换为Int?
我正在做下面的程序。如何计算Java 当两个Double除法并将Double商乘以Int时,如何将Double转换为Int?,java,Java,我正在做下面的程序。如何计算totalCostPerMiles=(numMiles/milesPerGallon)*价格当totalCostPerMiles是int时,numMiles和milesPerGallon是的两倍,并且price是int以获得计算值 假设milesPerGallon=30,numMiles=15,且价格=400 我需要numMiles/milesPerGallon输出0.5而不是0,并且totalCostPerMiles输出200而不是0 存储测量值的所有变量必须是双精
totalCostPerMiles=(numMiles/milesPerGallon)*价格
当totalCostPerMiles
是int
时,numMiles
和milesPerGallon
是的两倍,并且price
是int
以获得计算值
假设milesPerGallon=30代码>,numMiles=15代码>,且价格=400代码>
我需要numMiles/milesPerGallon
输出0.5而不是0,并且totalCostPerMiles
输出200而不是0
存储测量值的所有变量必须是双精度变量,存储货币值的所有变量必须是整数
import java.util.Scanner;
public class RoadTrip {
public static void main(String[] args) {
int price, budgetPrice,
priceInDollars, priceInCents, priceInDollarsBudget, priceInCentsBudget,
totalCostPerMiles, dollars, cents;
double milesPerGallon, numMiles, totalMilePerGall;
Scanner stdin = new Scanner(System.in);
milesPerGallon = stdin.nextDouble();
numMiles = stdin.nextDouble();
price = stdin.nextInt();
budgetPrice = stdin.nextInt();
totalCostPerMiles = (numMiles / milesPerGallon) * price; //produces error
数学运算总是二进制的(因此,2个参数。'a+b+c'不是3路加法;它是(a+b)+c
-2嵌套二进制运算的简写
如果二进制运算的任何一个“边”是双精度的,那么首先将另一个数字(int、long、float、byte、char、short,无所谓)转换为双精度,然后完成运算,结果是双精度的
因此,(numMiles/milesPerGallon)
是double类型的表达式
然后,你用一个整数乘以一个整数:that*price
。price是一个整数,但是double*int
是通过首先将该整数转换成一个double来完成的。因此,整个结果本身就是一个double
然后尝试将其分配给int,这就是问题所在:您不能这样做,因为java不知道您想要什么。应该将6.5
变为6还是7?那么1.239e123
呢
你可以选择要做什么。最简单的方法是“舍入舍入”模式,即舍入分数(因此,向下舍入..除非数字为负数,在这种情况下,向上舍入):
您甚至可以使用此选项并使用不同的舍入选项:向混合中添加0.5,现在将其舍入到最近值,并使用x.5
舍入
其他的东西可以从中找到,例如Math.round()
numMiles和milesPerGallon是双精度的,不。你把它们声明为字符串。Casting-为什么不使用它呢?例如(int)((numMiles/milesPerGallon)*price)
totalCostPerMilis = (int) ((numMiles / milesPerGallon) * price);