Javase第一部分:精度提升和强制转换

一:精度的自动提升
 
整型数据有: byte、 short、 int、 long, 他们都有自己的最大直和最小值,而且都有默认值,整型数据的默认值就是0。
DEMO:定义一个int类型的变量
 
 
以上的输出结果是25.0,原因是数字在进行四则运算的时候会自动提升精度,最终计算出来的结果的精度以高精度的为准,这种现象叫做精度的自动提升。
 
DEMO: int 类型的最大值和最小值
 
在这里我们可以使用到Java中一个表示整数的类取得最大值和最小值(这个类后面我们会分析的,先使用着不管他),之前的课程中我们说了int 类型的最小值是-2147483648”最大值“2147483647”
 
 
如果在int类型的最大值上继续加1会出现什么结果呢?
 
DEMO:如果超过了int类型的最大值或者最小值的结果是什么呢?
 
 
发现了最大值加一之后变成了最小值,最小值减去一之后变成了最大值,这种现象叫做数据溢出,在开发中--般不会出现的,只是作为面试的的一个概念提出来。如果要让数据不溢出应该提升精度(也叫做扩大数据类型)。
 
DEMO:扩大数据类型
 
 
1默认情况下是int类型,如果要让其转换成其他类型,比如long则在后面加上|即可,如果要让其转换成double类型则在后面加上d。上个demo说了四则运算中最后的精度以高精度的为准,我们在1的后面加上1此时把1变成了long类型的1,long类型的数据的比特位是64位,此时在int的最大.值上加一就不会出现数据溢出了(我们下次分析数据溢出的原因你就知道了)。
 
思考一个问题:如果要将一个int类型的变量精度提升怎么办呢?
 
DEMO:int类型的变量精度提升
 
 
如果要对一个变量的精度进行提升,那么必须在这个变量的前面加_上小括号,小括号中的内容是要提升的精度的类型,比如说(float)num。.
 
DEMO:将--个高精度的值赋值为低精度的变量
 
 
错误的提示:无法将一个高精度的数值赋值给低精度的变量,如果要赋值需要先将高精度的数据转换成低精度之后才能赋值,这种转换叫做强制类型转换。
 
DEMO:强制类型转换
 
 
发现了最 后的结果不是108,而是100,原因是在使用强制类型转换将高精度的数据转为低精度数据是会出现精度丢失,.上面的 demo中,0.8 就被丢失了,就是在转换过程中将高精度数据的小数部分丢失了!以上的转换方式就是强制类型转换。
 
总结:
1、精度自动提升在四则运算中最后的结果以高精度为准
2、数据的溢出现象比如说int类型的最大值加一-或者最小值减- - 则出现数据溢出
3、变量的强制类型转换在变量的前面使用具体的数据类型,而且要用小括号括起来
4、强制类型转换可能出现精度丢失
 
 

 

声援博主:您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波  推荐  不要忘记哦!!!

别忘了点 推荐 留下您来过的痕迹 

交流看我公告

 

你可能感兴趣的:(Javase第一部分:精度提升和强制转换)