Java学习 --- float VS double

来源:互联网 发布:软件行业方向 编辑:程序博客网 时间:2024/06/05 04:33

我们在MyEclipse中写Java程序时,当我们声明一个float变量时,在接下来的初始化过程时,必须在浮点数字面量的后面加上标志: f

这是为什么呢???  

首先,在Myeclipse中的提示是:Type  mismatch, cannot   convert   from double  to float;

从这里我们应该明白了: 浮点数字面量的默认值是一个double类型的值,所以当它向float类型convert时,会损失精度;

大家看看这段代码:

int aa = 0x7fffffff;
int bb = 0x7ffffff0;
float af = aa;
float bf = bb;
System.out.println(af);
System.out.println("bf    的值是: " + bf);
System.out.println("bf + 1的值是:" + (bf + 1));
System.out.println("从bf和(bf+1)的输出可以知道::    float类型的值是十分的不精确的,所以我们在实际的编程中是不使用float类型的数据的");
double af1 = aa;
double bf1 = bb;
System.out.println("af1(double):  " + af1);
System.out.println("bf1(double):  " + bf1);
System.out.println("bf1 + 1:      " + (bf1 + 1));
//因此double类型比float类型更加精确,所以在使用浮点数字面量的时候,我们需要注意的是它的默认值是double,所以要想向float类型赋值必须在末尾加上f
//float ff = 2.0;    //此处是错误的,原因是:2.0 是一个浮点数字面量,它的类型是double,由于double类型比float类型大,所以不能直接赋值
float ff = 2.0f;    //在定义float类型的数据时,Java语言的要求是:必须在浮点数字面量的后面加上标志: f


2.14748365E9
bf    的值是: 2.14748365E9
bf + 1的值是:2.14748365E9
从bf和(bf+1)的输出可以知道::    float类型的值是十分的不精确的,所以我们在实际的编程中是不使用float类型的数据的
af1(double):  2.147483647E9
bf1(double):  2.147483632E9
bf1 + 1:      2.147483633E9

原创粉丝点击