float f=3.4;是否正确?咋一看好像没什么问题,但是认真分析分析,短短的一句赋值代码蕴含多个知识点,也是最经常遇到的一个基础java面试题,不管原来知道不知道,现在告诉你,赶紧记牢面试无忧!
3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
Java的浮点数遵循IEEE754标准,采用二进制数据的科学计数法来表示浮点数,对于float型数值,第1位是符号位,接下里8位表示指数,再接下来的23位表示尾数;
对于double类型数值,第一位也是符号位,接下来的11位表示指数,再接下来的52位表示尾数。
因为Java浮点数使用二进制数据的科学记数法来表示浮点数,因此可能不能精确表示一个浮点数,使用double类型的浮点数比float类型的浮点数更精确,但如果浮点数的精度足够高,依然可能发生这种情况,如果开发者需要精确保存一个浮点数,则可以考虑使用BigDecimal类。
double类型代表双精度浮点数,float类型代表单精度浮点数。一个double类型的数值占8字节、64位,一个float类型的字节占4字节,32位。
以上是思博网络为广大奔走在面试以及学习阶段的java同行整理的关于Java float与double可能遇到的面试问题以及重要知识点,可能存在不足或者需要补充,您有什么观点和认识,欢迎指正补充,大家一起快乐学Java,高薪在就业!
如果遇到什么疑问或者困惑,可以联系我们,乐于与您分享讨论!
即刻预约
免费试听-咨询课程-获取免费资料