黑马程序员技术交流社区

标题: Java基础班, 终于明白为什么float的类型比long的类型大了. [打印本页]

作者: zeng1002    时间: 2017-3-30 23:57
标题: Java基础班, 终于明白为什么float的类型比long的类型大了.
long类型是8字节, float是4字节, 一开始很疑惑为什么float的类型比较大, 各种查资料终于是理解了. (虽然一开始的时候老师说了这是计算机规定的, 但还是不理解, 总想着按道理小类型往大类型转换的时候是不会损失精度的, 但是long是8字节, 那如果一个long类型的值, 并且这个值对应的二进制码超过了四个字节呢, float就4个字节要怎么转? 一直疑惑在这里) 其实浮点型的编码规则是不同的, float是4字节32位bit, 但是float只显示8位数字, 超过的话就使用科学计数法, 这里面的24位二进制就表示了那8位显示的数字, 而还有8个二进制位是显示幂的, 8位可以表示0~255, 但是浮点型是遵循IEEE 754标准的, 要减127即表示的幂范围是-127~128, 所以它能表示的数值范围要比long大得多了, 只是它只显示8位有效数字, 所以超过8位的long类型的值会只保留8位使用科学计数法表示,.
新人刚接触Java的一点小理解, 希望能帮到跟我有一样疑惑的朋友.
作者: 土豪金    时间: 2017-3-31 00:11
豁然开朗

作者: zlwxf    时间: 2017-3-31 00:14
有什么用吗?几乎用不到

作者: zeng1002    时间: 2017-3-31 00:15
zlwxf 发表于 2017-3-31 00:14
有什么用吗?几乎用不到

确实也没什么用吧,就是觉得有个问题没搞清楚不太爽

作者: WPH    时间: 2017-3-31 00:16
接触java好长时间了,但是这个问题我就没想过,看你写的我也是一脸蒙蔽

作者: fei19890221    时间: 2017-3-31 00:36
虽然根本看不懂,不过还是要赞一下

作者: linzpcom    时间: 2017-3-31 02:57
谢谢楼主分享,学习了
作者: starhub    时间: 2017-3-31 10:05
豁然开朗

作者: 一条鱼    时间: 2017-3-31 12:31
感觉是很厉害的样子,反正先赞一下吧
作者: 海天酱油    时间: 2017-3-31 18:29
懂不懂先mark

作者: 轻风24    时间: 2017-4-1 02:18
膜拜,懂了,非常感谢分享...
作者: 17631331017    时间: 2017-4-1 09:52
我觉得其实就是占用内存空间大小不一样,占用的大,所以能放进去的数的范围就更大一些。

作者: 剑桥子卿卿    时间: 2017-4-17 09:03
因为float里存的是10的幂





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2