1. java中float和double是多少位浮點數
float表示單精度浮點數在機內佔4個位元組,用32位二進制描述。
double表示雙精度浮點數在機內佔8個位元組,用64位二進制描述。
浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。
數符佔1位二進制,表示數的正負。
指數符佔1位二進制,表示指數的正負。
尾數表示浮點數有效數字,0.xxxxxxx,但不存開頭的0和點
指數存指數的有效數字。
指數佔多少位,尾數佔多少位,由計算機系統決定。
可能是數符加尾數佔24位,指數符加指數佔8位 -- float.
數符加尾數佔48位,指數符加指數佔16位 -- double.
知道了這四部分的佔位,按二進制估計大小范圍,再換算為十進制,就是浮點數的數值范圍。
對編程人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗內存是float的兩倍,double的運算速度比float慢得多,java語言中數學函數名稱double 和 float不同,不要寫錯,能用單精度時不要用雙精度(以省內存,加快運算速度)
2. Java初學float小數的問題
在計算機幾內部,小數不是按照四捨五入的方法的。因為計算機只有0和1,沒有4和5,所以不能四捨五入的。
不管是float還是double,在處理末位時都是直接丟棄的。比如一個小數,應該是用33位二進制碼才能完全表示的,但是float只有32位,於是最後一位就被扔了,表現出來的效果有時是減一,有時是不變。
3. Java中的float精確多少位
精確到多少位這樣不確切,確切地講float能保存7位有效數字,比如說1234567是7位有效數字,而1.234567也是7位有效數字~~
4. 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] 。
(4)javafloat幾位小數點擴展閱讀
基本數據類型的特點,位數,最大值和最小值。
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)
5. JAVA 中的Float類型不是7位有效數字嗎
首先說一下:
范圍是3.4E-38 ——3.4E+38,可提供7位有效數字。
上述這兩個量都是近似值,各個編譯器不太一樣的。
下面我就將標准值是怎麼定義的,和你說一下:
這個比較復雜,建議你找一下IEEE754標准看一下。
這個簡單說一下吧:
在IEEE754標准中進行了單精度浮點數(float)和雙精度數浮點數(double)的定義。float有32bit,double有64bit。它們的構成包括符號位、指數位和尾數位。
這些位的構成如下:
種類-------符號位-------------指數位----------------尾數位----
float---第31位(佔1bit)---第30-23位(佔8bit)----第22-0位(佔23bit)
double--第63位(佔1bit)---第62-52位(佔11bit)---第51-0位(佔52bit)
取值范圍主要看指數部分:
float的指數部分有8bit(2^8),由於是有符號型,所以得到對應的指數范圍-128~128。
double的指數部分有11bit(2^11),由於是有符號型,所以得到對應的指數范圍-1024~1024。
由於float的指數部分對應的指數范圍為-128~128,所以取值范圍為:
-2^128到2^128,約等於-3.4E38 — +3.4E38
精度(有效數字)主要看尾數位:
float的尾數位是23bit,對應7~8位十進制數,所以有效數字有的編譯器是7位,也有的是8位
6. java中float和double輸出結果到底是多少位
輸出1位
:因為
float
本來就是單精度的!
輸出1位正常!不過通常帶有
12.2f
1.float
它最多隻能保存
7位有效數字!2.兩個float相乘結果為float
3.乘數中只要有一個數為double,結果也有double
4.實數在計算機是以浮點數的形式表示的。所以要看它的實際二進制的編碼方式
7. 關於JAVA中浮點數據類型的問題,float跟double分別能表示多少位
浮點數的精度,指所有的有效數字的位數,例如0.123和12.3的有效數字都是三位。
表示範圍則用指數的范圍來說明,例如10^-37~ 10^38。
你用的什麼版本的eclipse?
我用的也不算很新的版本,eclipse自己告警了。
Version: Juno Service Release 1
Build id: 20120920-0800
給出的解決方案有兩個:講常量強制轉換為float,或者變數類型換成double。
直接用jdk 1.6編譯,提示如下:
ThreadDemo.java:14: 可能損失精度
找到: double
需要: float
float f = 1234567890987654321.1234567890987654321;
^
1 錯誤
8. java 如何使的float保留2位或者多位小數
表明四捨五入,保留兩位小數即float ft = 134.3435f; int scale = 2;//設置位數 int roundingMode = 4;//表示四捨五入,可以選擇其他舍值方式,例如去尾,等等. BigDecimal bd = new BigDecimal((double)ft); bd = bd.setScale(scale,roundingMode); ft = bd.floatValue();方法2:importjava.text.DecimalFormat;Stringa=newDecimalFormat(###,###,###.##).format(100.12345);即float scale = 34.236323; DecimalFormat fnum = new DecimalFormat(##0.00); String dd=fnum.format(scale); System.out.println(dd); 方法3:最簡單的方法 float b = (float)(Math.round(a*100))/100;(這里的100就是2位小數點,如果要其它位,如4位,這里兩個100改成10000)
9. 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。