用JAVA實現精確的四捨五入

	public static void main(String[] args) {
		double num = About.halfUpDouble(12.3425, 3);
		System.out.println(num);
	}
	
	public static double halfUpDouble(double num, int scale) {
		//注意,下面的Double必須先轉爲String再轉爲BigDecimal,否則轉成的BigDecimal會失真.比如
		//將12.3445轉爲BigDecimal可能就是12.3444999999.......(省略一大堆9),此時如果去除的
		//話會出現與期望不符合的結果
		BigDecimal b = new BigDecimal(new Double(num).toString());
		final BigDecimal one = new BigDecimal("1");		
		//曾經考慮過用BigDecimal.round(),但round好像無法控制小數點位數級別的四捨五入,只好用
		//除以一這種齷齪的方法,呵呵
		return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue();
	}

 

發佈了23 篇原創文章 · 獲贊 9 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章