java-数值类型之间的转换

数值类型之间的合法转换

数值类型之间的合法转换

1.图中的实心箭头表示无信息丢失的转换,虚箭头表示有可能精度损失的转换。
例如

int a = 123456789;  
float b = a;//b=1.23456792E8

2.当时用上边两个进行计算时要讲数值类型转换成相同的才能计算:

  • 如果两个操作数中有一个是double,另一个就会转成double
  • 否则如果两个操作数中有一个是float,另一个就会转成float
  • 否则如果两个操作数中有一个long,另一个就会转成long
  • 否则两个操作数都将被转成int类型

强制类型转换

强制类型转换,比如说double转int,有可能会丢失一些信息。
强制类型转换的语法是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。例如:

double c = 9.993;
int d = (int)c;//9

d为9,强制类型转换通过截取小数点部分将浮点型转换成整型。
如果想对浮点型进行舍入运算,以便得到最接近的整型,这种情况下,就需要使用Math.round方法:

double c = 9.993;
int d = (int)Math.round(c);//10

现在d的值为10,当时用round时,仍需要进行强制类型转换,因为round方法返回的类型是long类型,由于存在信息丢失的可能性,所以只有使用显性的强制类型转换才能将long类型转成int类型。

警告:如果试图将一个数值从一种类型强制转成另一种类型,而又超出了目标类型的表示范围,结果就截断成一个完全不同的值。例如,(byte)300的实际值为44

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值