浮点型数据类型表示实数,包含小数部分。现实世界的数据复杂,需要支持实数的数据类型。
一、浮点型常量 Java的实常数有两种表示形式:十进制数形式,由数字和小数点组成,且必须有小数点,如0.123, .123, 123. ,123.0 。 2.科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。 实常数在机器中占64位,具有double型的值。对于float型的值,则要在数字后加f或F,如12.3F,它在机器中占32位,且表示精度较低。
浮点型变量有两种类型:float和double。float占32位,取值范围为3.4e-038~3.4e+038;而double占64位,取值范围为1.7e-308~1.7e+308。double类型比float类型具有更高的精度和更大的表示范围,通常在科学计算等需要高精度的场景中使用。
在Java中,可以使用float和double来定义浮点型变量。例如: float f; // 指定变量f为float型 double d; // 指定变量d为double型 与C、C++不同,Java没有无符号整数类型,并且规定了整型和浮点型数据所占的内存字节数。这种规定确保了Java程序的安全性、鲁棒性和平台无关性。这意味着不同的Java实现在处理整型和浮点型数据时具有一致的行为,无论运行在哪个平台上,结果都是可预测的。
位运算通常在硬件控制中使用,表达式本身无法确定具体含义,需结合实际场景。
&叫做“按位与”,其规则是:0&0=0 1&0=0 0&1=0 1&1=1
“|”叫做“按位或”,运算规则是:0|0=0 1|0=1 0|1=1 1|1=1
0x7fffff用32位二进制表示就是 0000 0000 0111 1111 1111 1111 1111 1111
根据按位与的运算法则就是把bits的高9位清零。
0x800000用32位二进制表示是 0000 0000 1000 0000 0000 0000 0000 0000
根据按位或的运算法则就是把第24位置1。
那么综合来看,((bits & 0x7fffff)|0x800000)的意思就是先把bits的高9位清零,然后再把第24位置1。
关于前半部分,“
至于问号,就不用解释了吧?
浮点数在做运算后是会出现误差的,这很正常。
double a=2.00-1.10;
double b=0.90;
System.out.print(a==b);
结果会输出false
所以有时在判断浮点数相等时会用到一个方法,那就是
public static boolean isEqual(double a,double b){
final double epsilon=0.00000001;
return Math.abs(a-b) } 综上所述,浮点数经过运算后是会出现误差的,0.7799999713897705就是将float转化为double导致误差出现,0.78是float正常运算
以上是什么是java浮点数常量的详细内容。更多信息请关注PHP中文网其他相关文章!