java中float和double的區別?

2021-09-18 01:27:40 字數 428 閱讀 1682

float:單精度型別,精度是8位有效數字(其餘部分四捨五入),取值範圍是10的-38次方到10的38次方,float占用4個位元組的儲存空間。

double:雙精度型別,精度是17位有效數字,取值範圍是10的-308次方到10的308次方,double占用8個位元組的儲存空間。

若不宣告的,預設小數都用double來表示,所以如果要用float的話,則應該在其後加上f

例如:float a=1.63;//會顯示錯誤,正確的寫法為float a=1.63f;

則會提示不能將double轉化成float 這成為窄型轉化

注意float是8位有效數字,第7位數字將會產生四捨五入

所以如果乙個float變數 這樣定義: float a=1.32344435; 則第7位將產生四捨五入(5及5以下的都將捨去)

一般開發中建議用double 修飾小數

java中float記憶體儲存原理

規格化表示 浮點數採用的是ieee standard 754 floating point numbers標準 float占用4個位元組,和int一樣,也是32bit.第1個bit表示符號,0表示正數,1表示負數.第2 9個bit表示指數,一共8位 可以表示0 255 這裡的底數是2,為了同時表示正...

Java中float型別精度問題

今天發現了乙個小的問題,在網上找了說的不多,在這記錄下來方便自己和比人解決自己的問題吧。片段 1unit double.valueof actionutils.getbillingtransformunit request 取出換算單位1000.0 2svt curvesegment.getendv...

Java中float型別精度問題

今天發現了乙個小的問題,在網上找了說的不多,在這記錄下來方便自己和比人解決自己的問題吧。片段 1unit double.valueof actionutils.getbillingtransformunit request 取出換算單位1000.0 2svt curvesegment.getendv...