将float转换为int

时间:2013-07-26 06:49:52

标签: java

我来自Python背景并深入研究Java世界。 我试图在Java中将Float转换为int。我们在Python int_var = int(float_var)中做的事情是这样的

public class p1 {
    public static void main(String args[]) {
        Integer a = new Integer(5);
        Float b;
        b = new Float(3.14);
        a = (int)b;
        System.out.println(a);
    }
}
产生以下错误 -
p1.java:7: error: inconvertible types
        a = (int)b;
                 ^
  required: int
  found:    Float
1 error

9 个答案:

答案 0 :(得分:6)

你可以这样做

a = b.intValue()

答案 1 :(得分:5)

这是Java中令人烦恼的事情之一。解决您的问题:

a = (int)(float)b;

取消装箱将要求您从Float投射到float然后转换为int

答案 2 :(得分:4)

使用基元类型,你会没事的:

int a = 5;
float b = 3.14f;  // 3.14 is by default double. 3.14f is float.

a = (int)b;

它与 Wrappers 无法合作的原因是这些类型是非协变的,因此不兼容。


如果您使用的是Integer类型(这里您真的不需要),那么您不应该使用new创建包装类型对象。只需使用自动装箱功能:

Integer a = 5;  // instead of `new Integer(5);`

以上的赋值在Java 1.5之后工作,执行从int原语到Integer包装器的自动装箱。它还使JVM能够使用缓存的Integer文字(如果可用),从而防止创建不必要的对象。

答案 3 :(得分:3)

由于您使用的是盒装原语,a = b.intValue();应该符合您的需求。

答案 4 :(得分:1)

 float a =10.0f;
 int k=(int)a;

答案 5 :(得分:1)

使用此代码
a = b.intValue();

答案 6 :(得分:0)

使用Math.round方法: -

int a = Math.round(b);

答案 7 :(得分:0)

最好永远使用:

Math.floor(d)
Math.round(d)
Math.abs(d)

这些用于转换。

答案 8 :(得分:0)

您只需使用 Math.round()作为

即可
   int a = Math.round(14.32f)