如何在Java中将float转换为int
时间:2020-01-09 10:35:29 来源:igfitidea点击:
在本文中,我们将介绍如何在Java中将float转换为int。
在Java中将float转换为int时的注意事项
将float转换为int时,我们需要考虑的两件事是
- float的范围大于int,如果要转换为int的float超出了int的范围,则如何处理。
- 在浮点值中,存在小数部分,因为int没有小数部分,因此要考虑小数部分是另一回事。小数部分可以截断,或者需要四舍五入。
使用intValue()方法或者类型转换进行转换
我们可以使用Float类的intValue()方法(需要Float对象)或者通过显式类型将float值转换为int来将float转换为int。实际上,intValue()方法实现还进行类型转换,并在缩小原始转换后以int形式返回此Float的值。这两种方法的问题在于,在将float转换为int时,小数部分被截断时,不会舍入到最接近的整数。
使用intValue()方法将float转换为int
public class FloatToInt { public static void main(String[] args) { Float f = 36.89f; int val = f.intValue(); System.out.println("Converted int value- " + val); } }
输出:
Converted int value- 36
如我们所见,在将float值转换为int时,其值被截断了。
使用显式转换将float转换为int
public class FloatToInt { public static void main(String[] args) { float f = 36.89f; int val = (int)f; System.out.println("Converted int value- " + val); } }
输出:
Converted int value- 36
将float转换为int并四舍五入到最接近的整数
以上两种将float转换为int的方法并不是将float舍入为最接近的整数,这在大多数情况下都不是我们想要的。为此,我们应该使用Math.round(float a)方法,该方法将最接近的int返回到传递的参数。
Math.round()方法还处理特殊情况:
- 如果参数为NaN,则结果为0。
- 如果参数为负无穷大或者任何小于或者等于Integer.MIN_VALUE的值,则结果等于Integer.MIN_VALUE的值。
- 如果参数为正无穷大或者任何大于或者等于Integer.MAX_VALUE的值,则结果等于Integer.MAX_VALUE的值。
使用Math.round()在Java中将float转换为int
public class FloatToInt { public static void main(String[] args) { float f = 36.89f; int val = Math.round(f); System.out.println("Converted int value= " + val); } }
输出:
Converted int value= 37
如果传递的浮点值> Integer.MAX_VALUE
public class FloatToInt { public static void main(String[] args) { float f = 3456644678889f; int val = Math.round(f); System.out.println("Converted int value= " + val); } }
输出:
Converted int value= 2147483647
这是特例;由于传递的浮点值大于或者等于Integer.MAX_VALUE的值,因此返回Integer.MAX_VALUE。
具有不同float参数的示例
public class FloatToInt { public static void main(String[] args) { float val1 = 456; float val2 = -123.4545f; float val3 = 1456.8901f; int i1 = Math.round(val1); System.out.println("Converted int value= " + i1); int i2 = Math.round(val2); System.out.println("Converted int value= " + i2); int i3 = Math.round(val3); System.out.println("Converted int value= " + i3); } }
输出:
Converted int value= 456 Converted int value= -123 Converted int value= 1457