[英]Converting float to int
我来自Python背景,并涉足Java世界。 我正在尝试将Float转换为Java中的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
你可以做到
a = b.intValue()
这是Java中令人讨厌的事情之一。 解决此问题:
a = (int)(float)b;
取消装箱要求您从Float
为float
然后转换为int
使用基本类型,您将可以:
int a = 5;
float b = 3.14f; // 3.14 is by default double. 3.14f is float.
a = (int)b;
它不适用于Wrappers的原因是那些类型是非协变的,因此不兼容。
而且,如果您使用的是Integer
类型(此处实际上并不需要),则不应使用new
创建Wrapper类型的对象。 只需利用自动装箱功能:
Integer a = 5; // instead of `new Integer(5);`
上面的分配在Java 1.5之后起作用,执行从int
原语到Integer
包装器的自动装箱。 它还使JVM可以使用缓存的Integer文字(如果可用),从而防止创建不必要的对象。
由于您使用的是盒装原语,因此a = b.intValue();
应该适合您的需求。
float a =10.0f;
int k=(int)a;
使用此代码
a = b.intValue();
使用Math.round
方法:
int a = Math.round(b);
为获得最佳效果,请始终使用:
Math.floor(d)
Math.round(d)
Math.abs(d)
这些是用于转换的。
您可以简单地将Use Math.round()用作
int a = Math.round(14.32f)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.