-
当两个整数相除时,由于小数点以后的数字会被截断,使运算结果为整数,故此时若希望得到运算结果为所预期的浮点数,则此时必须将两整数其一或是全部强制转换类型为浮点数。
例如:float result; result = (float)a/b; // 将整数其中一个强制转换成浮点数,再与另一个整数相除 result = a/(float)b; result = (float)a/(float)b; // 将两个整数同时强制转换成浮点数后再彼此相除
-
小数化整数的时候,默认直接舍去小数点后的部分,而不是四舍五入
比如float是4.7 转换成int 后是4 而不是5 要四舍五入的话转换前先加上0.5int i ; double j = 4.7; i = int(j) //此时得到4 i = (int)(j+0.5); //此时得到5
-
数值转换:
- 不同的基本类型之间可以相互转换:
- 自动类型转换(隐式类型转换):从小类型到大类型可以自动完成。
int a=100; int b=200; long c=a+b;//自动将int转换为long
- 手动(强制)转换:从大类型到小类型需要强制转换符:
(需要转换成的类型)变量
例如
但这样转换可能会造成精度损失或者溢出long 1l=1024l; int i=(int)1l; //需要加强制转换符由于1024在int的范围内没有产生溢出
精度损失:
溢出:double pi=3.141592635897932384; float f=(float)pi; //会造成精度损失 System.out.println(f);//结果为:3.1415927
long l=1024L * 1024 * 1024 * 4; int j=(int) l;//会产生溢出 System.out.println(j); //结果为0
- 自动类型转换(隐式类型转换):从小类型到大类型可以自动完成。
- 不同的基本类型之间可以相互转换:
-
Q:数字后面加
l
什么意思?
A:指这个数字的取值范围是long(长整型)
如果数字后面不加l,默认的取值范围是int(整型)
比如:
给a赋值:long a=2147483648
; (编译出错,数字超出int型取值范围)
给a赋值:long a=2147483648L
;(正确,说明此时可以是long型的取值范)
long
类型的最大值是9223372036854775807
-
数值运算时的自动转换
多种基本类型参与的表达式运算中,运算结果会自动向较大类型进行转换:long distance=10000*365*24*60*60*299792458l; //由于有long型的直接量参与,整个表达式结果为long double change=800-599.0; //由于有double型的直接量599.0参与,整个表达式的结果为double double persent1=80/100; //结果为0.0,右边都是int型数据,运算结果也为int类型,结果为0,再赋值给double型,将0转换成0.0 double persent2=80.0/100; //结果为0.8,右边表达式有double型直接量参与,运算结果为double型
-
byte、char、short转换为int
byte、char、short三种类型实际存储的数据都是整数,在实际使用中遵循如下规则:- int可以直接赋值给byte,char和short,只要不超过其表达范围
- byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算
Java:数值计算-基本类型转换
最新推荐文章于 2025-03-19 10:21:14 发布