㈠ java中double和float的使用怎麼區別
setMaximumFractionDigits
public void setMaximumFractionDigits(int newValue)設置數的小數部分所允許的最大位數。maximumFractionDigits 必須 >= minimumFractionDigits。如果 maximumFractionDigits 的新值小於 minimumFractionDigits 的當前值,則 minimumFractionDigits 也將被設置為新值。
參數:
newValue - 要顯示的小數的最大位數;如果小於 0,則使用 0。具體子類可以為此值強加一個上限,以適合於被格式化的數值類型。
另請參見:
getMaximumFractionDigits()
㈡ java中float和double的區別...
1、內存結構
float和double的范圍是由指數的位數來決定的。
float的指數位有8位,而double的指數位有11位,分布如下:
float:
1bit(符號位)
8bits(指數位)
23bits(尾數位)
double:
1bit(符號位)
11bits(指數位)
52bits(尾數位)
於是,float的指數范圍為-128~+127,而double的指數范圍為-1024~+1023,並且指數位是按補碼的形式來劃分的。
其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值范圍。
float的范圍為-2^128
~
+2^127,也即-3.40E+38
~
+3.40E+38;double的范圍為-2^1024
~
+2^1023,也即-1.79E+308
~
+1.79E+308。
2.
精度
float和double的精度是由尾數的位數來決定的。浮點數在內存中是按科學計數法來存儲的,其整數部分始終是一個隱含著的「1」,由於它是不變的,故不能對精度造成影響。
float:2^23
=
8388608,一共七位,由於最左為1的一位省略了,這意味著最多能表示8位數:
2*8388608
=
16777216
。有8位有效數字,但絕對能保證的為7位,也即
float的精度為7~8位有效數字
double:2^52
=
4503599627370496,一共16位,同理,
double的精度為16~17位
之所以不能用f1==f2來判斷兩個數相等,是因為雖然f1和f2在可能是兩個不同的數字,但是受到浮點數表示精度的限制,有可能會錯誤的判斷兩個數相等!
㈢ java float和double的區別
單精度浮點數(float)與雙精度浮點數(double)的區別如下:
(1)在內存中佔有的字版節數不同
單精度權浮點數在機內佔4個位元組
雙精度浮點數在機內佔8個位元組
(2)有效數字位數不同
單精度浮點數有效數字8位
雙精度浮點數有效數字16位
(3)所能表示數的范圍不同
單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38
雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308
(4)在程序中處理速度不同一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快
㈣ Java語言中的浮點型數據的float和double的單精度和雙精度到底是啥意思
主要有下面幾個區別,手冊上的,希望能幫到你
1、變數類型不同
float屬於單精度型浮點數據。
double屬於雙精度型浮點數據。
2、指數范圍不同
float的指數范圍為-127~128。
double而double的指數范圍為-1023~1024
3、表達式指數位不同
float的表達式為1bit(符號位)+8bits(指數位)+23bits(尾數位)
double的表達式為1bit(符號位)+ 11bits(指數位)+ 52bits(尾數位)
4、佔用內存空間不同
float佔4個位元組(32位)內存空間,其數值范圍為3.4E-38~3.4E+38。
double佔8 個位元組(64位)內存空間,其數值范圍為1.7E-308~1.7E+308。
5、有效位數不同
float只能提供七位有效數字。
double可提供16位有效數字。