Java强制类型转换与四舍五入


强制类型转换

强制类型转换的基本概念

在从范围较小的值,赋值给范围较大的变量的时候,Java解释器会进行自动的类型转换,例如:将int类型的值,赋值给double类型的变量。

但是将范围较大的值赋值给,范围较小的变量的时候,如果不进行强制类型转换,Java解释器会报错,例如:将double类型的值赋值给int类型的变量。

强制类型转换很可能造成信息的损失。

强制类型转换的语法格式是:

int a1 = (int)3.1415926;

程序示例

public class FirstCode1 {
   public static void main(String[] args) {
       //java 自动类型转换
       int a1 = 3;
       double b1 = a1;
       System.out.println("b1 = "+b1);
       System.out.println("a1 = "+a1);

       //java强制类型转换
       double b2 = 3.1415926535;
       int a2 = (int)b2;
       System.out.println("b2 = "+b2);
       System.out.println("a2 = "+a2);
  }
}

运行结果

b1 = 3.0
a1 = 3
b2 = 3.1415926535
a2 = 3

四舍五入——round

round函数的基本概念

round函数可以对数值进行四舍五入的操作。

round方法返回的结果为long类型。

注意

如果试图将一个数值从一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,结果就会阶段成一个完全不同的值。

不要将boolean类型与任何数值类型进行强制类型转换,这样可以防止一些常见的错误。只有极少数情况下才需要将布尔类型转化成数值类型,这时可以用下列表达式:

b?1:0

程序示例

public class FirstCode1 {
   public static void main(String[] args) {
       //round函数的使用
       double a1 = 3.675;
       int a2 = (int)Math.round(a1);
       System.out.println("a2 = " + a2);

       //当强制类型转换的结果超过目标类型的表示范围时
       long b1 = 3681922L;
       byte b2 = (byte)b1;
       System.out.println("(byte)b2 = "+b2);

       //将布尔值转化为数值
       boolean c1 = true;
       boolean c2 = false;
       int c3 = c1?1:0;
       int c4 = c2?1:0;

       System.out.println(c3);
       System.out.println(c4);
  }
}

运行结果

a2 = 4
(byte)b2 = -126
1
0




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM