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的一点小理解, 希望能帮到跟我有一样疑惑的朋友. |
|