如何将Double除以两个Double并将Double商乘以Int时将Double转换为Int

  • 本文关键字:Double Int 并将 时将 转换 两个 java
  • 更新时间 :
  • 英文 :


我正在编写下面的程序。当totalCostPerMilesintnumMilesmilesPerGallondoublespriceint时,如何计算totalCostPerMiles = (numMiles / milesPerGallon) * price;以获得计算值?

假设milesPerGallon = 30;numMiles = 15;price = 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

数学运算总是二进制的(因此,有两个参数。"a+b+c"不是三元加法;它是(a+b)+c-2嵌套二进制运算的简写。

如果二进制运算的任意一侧是双精度,则首先将另一个数字(int、long、float、byte、char、short,无关紧要(转换为双精度,然后完成运算,结果为双精度。

因此,(numMiles / milesPerGallon)是一个double类型的表达式。

然后,你这样做(所以,一个双精度(,乘以一个int:that * price。price是一个int,但double*int是通过首先将该int转换为double来完成的。因此,整个结果本身就是一个二重。

然后,您尝试将其分配给int,这就是问题发生的地方:您不能这样做,因为java不知道您想要什么。6.5应该变成6还是7?1.239e123呢?

你可以选择做什么。最简单的方法是"四舍五入"模式,它会使分数倾斜(所以,向下四舍五舍五入……除非数字是负数,在这种情况下,它会向上四舍五进(:

totalCostPerMilis = (int) ((numMiles / milesPerGallon) * price);

您甚至可以使用它并使用不同的舍入选项:将0.5添加到混合中,现在它是四舍五入到最接近的值,x.5向上取整。

其他物质可以用例如CCD_ 21找到。

最新更新