您的位置:首页 > 编程语言 > Java开发

Java学习 --- float VS double

2013-03-13 19:41 120 查看
我们在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: