Java:数值计算-基本类型转换

  • 当两个整数相除时,由于小数点以后的数字会被截断,使运算结果为整数,故此时若希望得到运算结果为所预期的浮点数,则此时必须将两整数其一或是全部强制转换类型为浮点数。
    例如:

    float result;
    result = (float)a/b; // 将整数其中一个强制转换成浮点数,再与另一个整数相除 
    result = a/(float)b; 
    result = (float)a/(float)b; // 将两个整数同时强制转换成浮点数后再彼此相除
    
  • 小数化整数的时候,默认直接舍去小数点后的部分,而不是四舍五入
    比如float是4.7 转换成int 后是4 而不是5 要四舍五入的话转换前先加上0.5

    int 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类型再进行运算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值