2012-12-30 60 views
22

我希望儘可能將毫秒轉換爲秒(例如1500ms至1.5s或500ms至0.5s)。如何將毫秒數轉換爲精度

Double.parseDouble(500/1000 + "." + 500 % 1000);不是最好的方法:我正在尋找一種方法來從除法操作中獲得餘數,所以我可以簡單地將餘數加在上面。

回答

59

當然,你只需要:

double seconds = milliseconds/1000.0; 

有沒有需要手動分別做了兩個部分 - 你只需要浮點運算,它使用的1000.0(作爲double文字)的部隊。 (我假設你的milliseconds值是某種形式的整數。)

請注意,像往常一樣double,你可能無法完全表示結果。考慮使用BigDecimal如果你想表示100ms爲0.1秒剛好。 (考慮到這是一個物理量,和100ms的不會是首先準確,一個double可能是合適的,但是......)

+0

如果使用'INT/1000.0'你不會看到表示錯誤,如果您轉換回字符串,這將是它校正幅度。 –

+0

謝謝,從來不知道那是那麼簡單! –

+0

這是一個風格問題,但我個人更喜歡'1000D'到'1000.0',因爲它使得它更清晰,它是一個雙重字面,末尾沒有'.0',這真的讓我強迫症。 – bcsb1001

5

你爲什麼不乾脆試試

System.out.println(1500/1000.0); 
System.out.println(500/1000.0); 
+0

謝謝,我會選擇這個作爲最好的答案,但喬恩的一點更詳細 –

1

我也有這個問題,不知何故,我的代碼沒有提供確切的值,但將秒數舍入到0.0(如果毫秒小於1秒)。 幫助我的是將小數加在除法值上。

double time_seconds = time_milliseconds/1000.0; // add the decimal 
System.out.println(time_milliseconds);    // Now this should give you the right value.