如何在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