课时13:浮点型数据
浮点型数据描述的是小数,而在 Java 里面任意的一个小数常量其对应的类型为 Double ,所以在以后描述小数的时候都建议大家直接使用 Double 来进行定义。
范例:定义 Double 的变量
public class JavaDemo { public static void main(String args[]) { //10.2是一个小数其对应的类型为double double x =10.2; int y =10; // double类型*int类型=double double result = x*y; System.Out.println(result); } }
所有的数据类型进行自动转型的时候都是由小类型向大类型进行自动转换处理。默认的类型为 Double ,但也可以定义位数相对较少的 Float 变量。此时从赋值的时候就必须采用强制类型的转换。
范例:定义 Float 变量
public class JavaDemo { public static void main(String args[]) { float x =(float)10.2; float y =10.1F; System.Out.println(x*y);//float型 } }
比如 Float x = 10.2,按照我之前提到的,任何一个小数默认都是Double类型,这里相当于从 Double 转换为 Float 。因此,运行结果会提示类型不兼容,指出从 Double 转换为 Float 可能会导致精度损失。那么,这里能不能进行强制类型转换呢?把代码写到这里,大家发现是否可行?是可以的。
除了强制类型转换之外,还有一种方法: Float y = 10.1 F 。这与我们之前提到的L类似,都是用来指定类型为 Float 。接下来,我们继续执行 System.Out.Println ( x * y ),结果应该是 Float 类型。现在,我们对代码进行编译,然后将代码定位到这里,再次执行。
大家看一下结果。这也是我希望你们看到的结果。因为你会发现,结果中除了正常的数值外,后面还出现了一串小数点。这个结果前面是正确的,但后面的小数点是 Java 自诞生以来一直存在的问题,无法解决。如果使用 Float 进行操作,就需要考虑到这些情况。
通过一系列的代码分析发现,整型是不包含有我们小数点的,而浮点型是包含有小数点的。
范例:观察一个程序
public class JavaDemo { public static void main(String args[]) { int x =10; int y =4; System.Out.println(x/y); } }
此时的叫计算结果为2,得到2的主要原因在于:整型是不保存有小数点的,所以现在的计算结果为“2.5”,抛开小数点不看,最终的结果只是2。如果现在要想得到所需要的正确的计算,那么就需要进行转型处理。
范例:数据转型
public class JavaDemo { public static void main(String args[]) { int x =10; int y =4; System.Out.println((double)x/y); } }
以这个代码为例,在程序中假设代码为System.Out.Println ((Double) x / y) ,如果 x 被强制转换为 Double ,那么计算就变成了 Double 除以 Int ,结果自然是所有范围小的数据类型会自动转换为范围大的类型,即 Int 会转换为 Double 。那么最终结果就是正常的2.5。因此,在这一点上,大家一定要把握住原则。
在以后计算的时候千万要注意你选择的数据类型,将直接决定小数点的问题,这一点至关重要。