Ⅰ java中float和double的取值范圍是什麼
float:4位元組(32bit),IEEE 754. 取值范圍:
[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38] 。
double: 8位元組(64bit) ,IEEE 754. 取值范圍:
[-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308] 。
(1)javadouble范圍擴展閱讀
基本數據類型的特點,位數,最大值和最小值。
1、
基本類型:short 二進制位數:16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
2、
基本類型:int 二進制位數:32
包裝類:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
3、
基本類型:long 二進制位數:64
包裝類:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)
4、
基本類型:float 二進制位數:32
包裝類:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)
5、
基本類型:double 二進制位數:64
包裝類:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)
Ⅱ java double和float的區別
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中double的取值范圍為1.79E308。E308是什麼意思
此說法正確:
這個是科學計數法,E308表示10的308次方.
1.79E308也就是1.79乘以10的308次方
關於位存儲:
比如1位,只能表示0和1,所以1位最大值1
比如2位,0到3,所以最大值3.
關於long:
long共64位其中1位是符號位正負,剩餘63位,
表示最大數 2^63-1 =9223372036854775807
long用途:
十進制就有19位,如果你的訂單低於19位就能使用long來存儲。
問題:
double為什麼表示的整數比long大,都是64位啊
原來double,把64位劃分了幾個 部分,
1、有符號位,指數位,尾數位,通過降低精確度存儲更大的數字。
2、尾數52位存儲具體數字,指數11位和小數點位置有關,符號位1位代表正負
3、如果整數,你的數超過2^52,double就不精確了,開始舍棄精度
4、如果小數,小數點後邊的數超過2^52,double就不精確了,開始舍棄精度
double的應用:
只是提供了小數支持,小數精確到16位左右。也能存儲整數。
但是整數精確只能表示2^52以內的數,超過就不精確了。
所以19位以內的整數可以用long,16以內的小數和整數用double
Ⅳ 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位有效數字。
Ⅳ Java中float和double的取值范圍該怎樣理解
基本類型float佔4個位元組,二進制位數有32位,取值范圍為[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38]。
基本類型double佔8個位元組,二進制位數有64位,取值范圍為[-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308] 。
PS:其中e代表10的多少次方。
IEEE二進制浮點數算術標准(IEEE 754)是20世紀80年代以來最廣泛使用的浮點數運算標准,為許多CPU與浮點運算器所採用。這個標準定義了表示浮點數的格式(包括負零-0)與反常值(denormal number)),一些特殊數值(無窮(Inf)與非數值(NaN)),以及這些數值的「浮點數運算符」;它也指明了四種數值舍入規則和五種例外狀況(包括例外發生的時機與處理方式)。
(5)javadouble范圍擴展閱讀:
Java有兩種浮點數據類型,第一種float使用32 bit表示,對應單精度浮點數,運行速度相比double更快,占內存更小,但是當數值非常大或者非常小的時候會變得不精確。精度要求不高的時候可以使用float類型。double為64位表示,將浮點數賦給某個變數時,如果不字面值後面加f或者F,則默認為double類型。java.lang.Math中的函數都採用double類型。如果double和float都無法達到想要的精度,可以使用BigDecimal類。
Ⅵ java 中byte.short,int,long,float,double 的取值范圍分別是多少
其中byte、short、int、long都是表示整數的,只不過他們的取值范圍不一樣
byte的取值范圍為-128~127,佔用1個位元組(-2的7次方到2的7次方-1)
short的取值范圍為-32768~32767,佔用2個位元組(-2的15次方到2的15次方-1)
int的取值范圍為(-2147483648~2147483647),佔用4個位元組(-2的31次方到2的31次方-1)
long的取值范圍為(-9223372036854774808~9223372036854774807),佔用8個位元組(-2的63次方到2的63次方-1)
float和double是表示浮點型的數據類型,他們之間的區別在於他們的精確度不同
float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同樣,e-45表示乘以10的負45次方)佔用4個位元組
double 1.797693e+308~ 4.9000000e-324 佔用8個位元組
double型比float型存儲范圍更大,精度更高,所以通常的浮點型的數據在不聲明的情況下都是double型的,如果要表示一個數據是float型的,可以在數據後面加上「F」。
浮點型的數據是不能完全精確的,所以有的時候在計算的時候可能會在小數點最後幾位出現浮動,這是正常的。
Ⅶ 在Java語言中 long和double的范圍
long的取值范圍是2的63次方-1到負的2的63次方。
double的取值范圍比較復雜建議去看標准化協議,即使是雙精度的double在精確計算上誤差也比較大建議使用bigdecimal
Ⅷ java中double創建的是什麼
創建的是雙精度浮點型數據,佔用64bit,
double型的范圍:4.9×10-324至1.8×10308。
在對float數據進行賦值時,要在數字的後面添加f(或F),否則java編譯器會認為1.3是一個double類型的數值。而double不能直接賦值給float類型
Ⅸ java double 小數有幾位
double的范圍為-2^1024 ~ +2^1023,也就是-1.79E+308 ~ +1.79E+308。
Ⅹ float和 double類型在java各是多少位啊
Java中的float是32位的,double是64位的。
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。