我来自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
答案 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)