我正在解決一個需要輸出被截斷的問題,令我驚訝的是,我一直無法找到一種在java中截斷數字的方法。截斷double值到6位小數
輸出需要是一個數字後加6位小數。
我想要的是 double truncate(double number,int places)
和輸出爲 truncate(14/3.0) = 4.666666
。
然而我得到的是
public static double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException();
long factor = (long) Math.pow(10, places);
value = value * factor;
long tmp = Math.round(value);
return (double) tmp/factor;
}
// rounds(14/3.0 , 6) = 4.666667
隨着String.format
我得到
String.format("%.6f", 14/3.0) = 4.666667
我也試過一個解決方案,我就發現計算器使用的BigDecimal,暗示這給了我非常相同回答。
NumberFormat
似乎也以同樣的方式
java.text.NumberFormat f = java.text.NumberFormat.getNumberInstance();
f.setMinimumFractionDigits(6);
System.out.println(f.format(14/3.0)); // 4.666667
工作是否有一個內置的方法做到這一點還是我需要寫我使用類似的BigInteger自己? 有什麼我做錯了嗎?
我想要一個double值如何使用cast來幫助? – nikhil
@nikhil在你的'round'方法中,我建議將替換方法轉換爲你正在尋找的'truncate'方法。 – assylias
謝謝,它工作。我會盡快將答案標記爲接受。 – nikhil