簡體   English   中英

Java - 將小時(雙精度)轉換為分鍾(整數),反之亦然

[英]Java - Converting hours(in double) to minutes(integer) and vice versa

我需要正確的公式,將小時轉換為分鍾,反之亦然。 我已經編寫了一個代碼,但它似乎沒有按預期工作。 例如:如果我有小時 = 8.16,那么分鍾應該是 490,但我得到的結果是 489。

  import java.io.*;
  class DoubleToInt {

  public static void main(String[] args) throws IOException{

  BufferedReader buff = 
  new BufferedReader(new InputStreamReader(System.in)); 
  System.out.println("Enter the double hours:");
  String d = buff.readLine();

  double hours = Double.parseDouble(d);
  int min = (int) ((double)hours * 60);

  System.out.println("Minutes:=" + min);
  }
} 

那是因為轉換為int截斷小數部分 - 它不會將其四舍五入:

8.16 * 60 = 489.6

當轉換為int時,它變為 489。

考慮使用Math.round()進行計算:

int min = (int) Math.round(hours * 60);

注意: double的准確性有限,並且存在“小余數誤差”問題,但使用Math.round()可以很好地解決該問題,而無需處理BigDecimal (我們在這里不計算行星際火箭軌跡)。

僅供參考,要將分鍾轉換為小時,請使用以下命令:

double hours = min / 60d; // Note the "d"

您需要60之后的 "d" 來使 60 成為double ,否則它是一個int ,因此您的結果也將是一個int ,使hours數加倍。 通過使其成為double ,您可以將 Java 向上轉換為 double 以進行計算,這就是您想要的。

8.16 X 60 結果為 489.6,如果將此值轉換為 int,您將得到 489

int a = (int)489.6;
      System.out.println("Minutes:=" + a);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM