2013-11-21 77 views
0

我想將英里轉換爲公里。在這種情況下使用BigDecimal是否過分?將十進制數轉換爲完整整數 - 是BigDecimal矯枉過正?

我可以改進以下不使用BigDecimals嗎?我想輪到最近的完整號碼。我對小數點不感興趣。

private static final BigDecimal MILE = new BigDecimal(1.609344); 

String milesToKm(String miles) { 
    return new BigDecimal(miles).multiply(MILE).setScale(0, RoundingMode.HALF_UP).toString(); 
} 
+1

如果你在公里和英里都使用整數,'BigDecimal'肯定是矯枉過正。我不知道這種影響(你可以測量時間差異)。浮點錯誤非常小,所以如果你在轉換後進行舍入,你將不會注意到它們。 (我沒有參考證明我的陳述 - 雖然我確定他們存在 - 這就是爲什麼我不會發布這個答案;-)) –

+0

作爲'MILE'必須是帶分數的小數,我可能不能在這裏使用BigInteger ... – membersound

+0

我暗示只是使用'double'或'float' ... –

回答

2

剛剛使用double有什麼問題?

int km = (int) Math.round(miles * 1.609344D); 

爲什麼要擔心如果四捨五入爲整數無論如何都會造成微小的誤差?