我正在編寫一個程序來獲得兩個數字的平均值。對於測試用例,2, 4
的輸出應該是3
而不是3.0
。對於測試用例,-1282660896, -672813783
輸出應該是-977737339.5
而不是-9.777373395E8
。從雙精度除去小數點後的尾部零點
我的代碼是這樣的:
public static void getAve(long a, long b){
System.out.println((double)(a + b)/2);
}
我還創建了一個格式化功能,以滿足我的需要,像這樣:
public static String fmt(double d) {
if (d == (long) d)
return String.format("%d", (long) d);
else
return String.format("%s", d);
}
但是這也失敗了測試用例2
您需要一種不切換到科學記數法的格式。 (d)' –
@PeterLawrey謝謝你的解決方案工作:) – Jaguar
你可以保留DecimalFormat對象作爲一個常量來提高性能。 –