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
这是为什么呢???
首先,在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
相关文章推荐
- Java学习笔记 --抽象类与接口 基于类Shape
- Java中逻辑运算符学习笔记
- Java学习-静态代理
- java设计模式学习系列之一:单例模式(Singleton)
- java学习笔记04
- 【4】ThinkingInJava学习笔记
- Java程序员的JavaScript学习笔记(4——闭包/getter/setter)
- java学习2-循环中的嵌套语句2
- java多态学习
- java学习 control层的功能
- java-web-j2ee学习建议路线(转载)
- 我的Thinking in Java学习笔记(三)
- JAVA_WEB Struts2学习:Struts2解耦、耦合方式获取request、session、aplication对象
- 黑马程序员---java学习笔记之java基础加强二
- Java学习-004-传世经典Helloworld
- Java学习笔记-窗口创建
- 记录学习的点滴(Java多线程学习)
- (42)Java学习笔记——IO流 / 字节流
- java基础学习总结——面向对象1
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )