A. java的long類型與float相加出錯問題
首先float只能精確到小數點後第7位,後面的就不確定了。按照上面的,結果是300000124.23。float會用E來表示,也就是3.0000012(4)E8。而4正好在第8位,所以是不精確的,不確定的。如果你是30000000L,那麼結果就是3.0000124E7了。
B. java裡面怎麼把long類型轉化為floatFloat.parseFloat()轉不了...
Float.parseFloat(String num) 接受參數為string,所以必須先轉換long為string
public static void main(String[] args) {
long num = 10000000000000L;
float f1 = (float) num;
float f = Float.parseFloat(String.valueOf(num));
System.out.println(f1);
System.out.println(f);
}
long轉換為float可能會發生精度丟失的。
C. java中,long型佔64位元組,float型佔32位元組,為什麼long表示的最大數還沒float大
public class MaxValueTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(Long.SIZE);
System.out.println(Long.MAX_VALUE);
System.out.println(Float.SIZE);
System.out.println(Float.MAX_VALUE);
}
}
輸出:
64
9223372036854775807
32
3.4028235E38
----
Long是整形,他是精確的,精確到個位的。
而Float是浮點型,它是有有效位數的,從上面的結果可以看出,3.4028235才是Float的精確位數。
整形和浮點型在內存中的表示方法是不一樣的,
對於浮點型來說,有一部分是用來表示有效位數的,有一部分是用來表示多少次方。
具體的你可以去參考一下,整形和浮點型在內存中的表示方式。
D. java中為什麼long的范圍小於float求解答
因為float的32bit中
一位表示符號位,8bit表示指數,23bit表示底數。而long直接都用來存數了。當然不如有指數的float范圍大了。
E. JAVA的數據類型轉換,資料說long可以直接轉換成float。但float是4個位元組,8個位元組的long型不會丟失精度
當然會丟失精度,float精度7位。
但double消耗內存是float的兩倍,double的運算速度比float慢得多,java語言中數學函數名稱double 和 float不同,不要寫錯,能用單精度時不要用雙精度(以省內存,加快運算速度)
F. java中為什麼long的范圍小於float求解答
因為long要存儲嚴格的整數,有嚴格的范圍限制,精度永遠為1
float是浮動精度。支持小數,但數值達到一定大的時候,就會出現誤差。
當float的值達到一定大小,程序中遇到2個float比較的時候會出現應該相等,但結果不等,或者應該不等卻相等的情況。因為float是有誤差的
long沒有誤差,但不能有小數。。
G. 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」。
浮點型的數據是不能完全精確的,所以有的時候在計算的時候可能會在小數點最後幾位出現浮動,這是正常的。
H. java中long和float的大小問題
int 32bit
long 64bit
float 32bit
double 62bit
自己參考吧!另外說聲,byte,short,int,long都屬於整形數據類型
而float和double屬於浮點型,而浮點型默認的是double,這就意味著你聲明float t = 1.0是不會通過編譯的,因為1.0在java中應該是double型的,所以你必須這樣聲明,float t = 1.0F;或者乾脆float t =(float)1.0;
這是新手常犯的錯誤,也是面試常見的java基礎之一