问题描述
请问一下,在java中,long的大小是8字节,float的大小是4字节,8字节的long怎么就可以隐式的转换为4字节float的呢? 问题补充:我的意思是 8字节→4字节 不是应该强制转换吗?因为要去位呀~~怎么java可以隐式的转换~~
解决方案
这都说了些什么!这不误人子弟嘛兄弟,是这个样子的:由于浮点数的存储机制与定点不同,使得它能表示的数的范围大大扩展了,举个例子 float i=2345000000000L;对这个数而言,4字节的int类型是指定存不下的,但是单精度浮点数是可以的。纵使是单精度,它也是浮点数,可表示数的范围-2^127~2^127折合十进制-1.7*10^38~1.7*10^38 , 瘦死的骆驼比马大。 long 可表示的数的范围还不足10^20,那你说可不可以自动转型 ?!为什么同样是四个字节,float这么厉害? 那还要long干什么 ?切记:使用浮点型的时候,要注意它的“有效数字”(强调一下),单精度为7位,7位以后的皆不可信了。 它牺牲的是 有效数字的位数!数的范围是足够了
解决方案二:
这个java类型转换,向上转是自动档,位数不够自动补0
解决方案三:
要是穷根问底的话就好比是1+1=2 Why?
解决方案四:
这是java中的机制呀,“向上转型”,java中最大的对象是object,那么肯定object可以转成所有的对象。也可以说兼容所有的对象!
时间: 2024-09-30 20:10:31