Java——BigDecimal 筆記

BigDecimal 比Double, float更加精確,你記住這個就行啦!

1.構造方法

 public BigDecimal(double val)    將double表示形式轉換爲BigDecimal *不建議使用

 public BigDecimal(int val)  將int表示形式轉換成BigDecimal

    public BigDecimal(String val)  將String表示形式轉換成BigDecimal

2.加減乘除

public BigDecimal add(BigDecimal value);                        //加法

public BigDecimal subtract(BigDecimal value);                   //減法 

public BigDecimal multiply(BigDecimal value);                   //乘法

public BigDecimal divide(BigDecimal value);                     //除法

3. 四捨五入

BigDecimal.setScale()方法用於格式化小數點

setScale(1)表示保留一位小數,默認用四捨五入方式 

setScale(1,BigDecimal.ROUND_DOWN)直接刪除多餘的小數位,如2.35會變成2.3 

setScale(1,BigDecimal.ROUND_UP)進位處理,2.35變成2.4 

setScale(1,BigDecimal.ROUND_HALF_UP)四捨五入,2.35變成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN)四捨五入,2.35變成2.3,如果是5則向下舍

import java.math.BigDecimal;
import java.util.*;
public class Main{
	public static void main(String []argc) {
		double x = 1;
		double y = 3;
		double res = x/y * 1000000;
		int n;
//將求得數據,轉換爲BigDecimal, 之後將其四捨五入,然後取int值與618034比較,其實就是求比值四捨五入後已經達到了與 0.618034 一致的精度。只是轉爲爲618034
		while(618034 != new BigDecimal(String.valueOf(res)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()) {
			double temp = x + y;
			x = y;
			y = temp;
			res = x/y * 1000000;
		}
		System.out.println((int)x + "/" + (int) y);
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章