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基础之一