Java基礎之浮點型變量和BigDecimal的使用

帶小數的數據在Java中稱爲浮點型,浮點型可以分爲float類型和double類型。

類型

佔用存儲空間

表數範圍

float

4字節

-3.403E38~3.403E38

double

8字節

-1.798E308~1.798E308

float類型又被稱爲單精度類型,尾數可以精確到7位有效數字,在很多情況下float類型的精度很難滿足需求。而double表示這種類型的數值約是float類型的兩倍,又被稱作雙精度類型,絕大部分應用程序都採用double類型。浮點類型常量默認類型也是double。

 

 

Java浮點類型常量的兩種表現形式


  • 十進制數形式,例如:3.14 314.0 0.314
  • 科學記數法形式,如:314e2 314E2 314E-2

上面的科學記數法形式,e2表示10的2次方,也就是314乘10的2次方。而E-2表示10的-2次方,即314乘10的-2次方。

 

 

使用科學記數法個浮點型變量賦值


double f1=314e2;	//314*10^2 --> 31400.0
double f2=314e-2;	//314*10^(-2) --> 3.14
float f3=3.3f;

float類型的數值有一個後綴F或者f,如果沒有的話,則默認爲double類型,也可以在浮點數值後面直接添加D或者d,以明確其爲double類型。同時注意,爲float類型數據賦值時,要加上後綴F或者f

 

 

浮點數不要用於比較


float a1=0.1f;
double a2=1.0/10;
System.out.println(a1==a2);  //輸出結果爲false
float a1=0.1f;
double a2=1.0/10;
System.out.println(a1==a2);  //輸出結果爲false

浮點數是不精確的,因此一點不要用於比較!

 

 

使用BigDecimal進行浮點數的比較


浮點類型float,double的數據不適合在不容許舍入誤差的金融計算領域。如果需要進行不產生誤差的精確數字計算,需要使用BigDecimal類。

在java.math包下面的兩個有用的類:BigInteger和BigDecimal,這兩個類可以處理任意長度的數值。BigInteger實現了任意精度的整數運算。BigDecimal實現了任意精度的浮點數運算。

 

 

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