Java之路:截尾、舍入与提升

截尾和舍入

在执行窄化转换时,必须注意截尾与舍入的问题。例如:如果将一个浮点数转换为整型值,Java会如何处理呢?如果将29.7转换为int,结果是30还是29?

public class Cast {
	public static void main(String[] args) {
		float f = 29.7f;
		double d = 200.13213;
		int i = (int)f;
		System.out.println(i);
		i = (int)d;
		System.out.println(i);
	}
}	

【结果】
在这里插入图片描述

注意:在将float和double转型为整型值时,总是对该数字执行截尾。如果想得到舍入的结果,就需要使用java.lang.Math中的**round()**方法:

public class Cast {
	public static void main(String[] args) {
		float fabove = 0.7f, fbelow = 0.4f;
		double dabove = 0.8, dbelow = 0.4;
		System.out.println("fabove = " + Math.round(fabove));
		System.out.println("fbelow = " + Math.round(fbelow));
		System.out.println("dabove = " + Math.round(dabove));
		System.out.println("dbelow = " + Math.round(dbelow));
	}
}

【结果】
在这里插入图片描述

提升

如果对基本数据类型执行算术运算或按位运算,只要类型比int小(char、byte、short),那么在运算之前,这些值都会自动转换面int

通常,表达式中出现最大的数据类型决定了表达式最终结果的数据类型。

如:将一个float类型值与一个double值相乘,结果为double;将一个int值与一个long值相加,结果为long

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值