[英]How to convert Double to Int when dividing two Doubles and multiplying the Double quotient by Int?
我正在研究下面的程序。 你如何計算totalCostPerMiles = (numMiles / milesPerGallon) * price;
當totalCostPerMiles
是int
, numMiles
和milesPerGallon
是doubles
,而price
是int
以獲得計算值時?
假設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
數學運算始終是二元運算(因此,2 個參數。'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
舍入。
其他東西可以通過例如Math.round()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.