A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int  n=123456789;
float f=n;
此时f=1.23456792E8
不懂啊,这怎么理解?

13 个回复

倒序浏览
我瞎说啊。Int是四个字节,float也是四个字节,所以通过二进制表示的数位是差不多的,比如你的123456789,那float为什么要叫浮点型的呢?应该就是多一个表示小数点在哪的位数吧。以上纯属瞎BB,没有具体文献视频引用,呵呵。
回复 使用道具 举报
float类型能表示的数的范围远大于int型,所有int型的数转换为float不会溢出,但可能会舍入,又由于float只能表现成带小数的数,所以才有了上述结果,与类型所占的字节数没有太大关系。
回复 使用道具 举报
把int类型强转为float类型
回复 使用道具 举报
java中所有关于小数的运算都是不准确的,
回复 使用道具 举报
我觉得跟“float 数据在内存中是怎么存储的”这个问题有关系,楼主可以搜索资料慢慢研究
回复 使用道具 举报
qlmmys 中级黑马 2015-8-18 22:26:57
7#
本帖最后由 qlmmys 于 2019-10-18 15:13 编辑

http://bbs.itheima.com/forum.php ... =1723912&page=1
回复 使用道具 举报
float的存储方式和int类型是不一样的,下面的采用的是科学计数法,即1.23456789*10^8次方
回复 使用道具 举报
zhao1991 发表于 2015-8-18 20:34
float类型能表示的数的范围远大于int型,所有int型的数转换为float不会溢出,但可能会舍入,又由于float只 ...

我理解的是  f=1.23456789E8 ,为什么后面不是89而是92?
回复 使用道具 举报
sven556677 发表于 2015-8-18 20:09
我瞎说啊。Int是四个字节,float也是四个字节,所以通过二进制表示的数位是差不多的,比如你的123456789, ...

没事  都在学习中,类型转换这块最头疼。
回复 使用道具 举报
lf900827 发表于 2015-8-18 22:36
float的存储方式和int类型是不一样的,下面的采用的是科学计数法,即1.23456789*10^8次方 ...

我理解的是  f=1.23456789E8 ,为什么后面不是89而是92
回复 使用道具 举报
Coolman 发表于 2015-8-18 22:24
我觉得跟“float 数据在内存中是怎么存储的”这个问题有关系,楼主可以搜索资料慢慢研究 ...

好  我查查资料看看。
回复 使用道具 举报
10的八次方把
回复 使用道具 举报
123456789=111010110111100110100010101=1.11010110111100110100010101*2^26,由于float类型数占4个字节,其中符号位1位,尾数23位(小数点后面的位),阶码8位,在123456789所对应的二进制科学表示法中,尾数是11010110111100110100010101有26位,但尾数只能有23位,所以多出来的位就被舍弃了,就有了1.23456792E8吧
回复 使用道具 举报
zhao1991 发表于 2015-8-19 16:06
123456789=111010110111100110100010101=1.11010110111100110100010101*2^26,由于float类型数占4个字节, ...

感谢你的解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马