Java 如何从浮点数中获取int值?

Java 如何从浮点数中获取int值?,java,Java,如果我得到一个随机双精度,如何只得到int? 示例: 1114.999-将114作为整数获取 2 565.343234-将565作为整数获取。给定值: float f = 114.999f; int i = (int) f; 使用强制转换将其向下转换为整数。最简单的方法是将双精度值强制转换为整数。例如 int 114.9999==114 但是,double类型可以表示超出int范围的数字。您可能需要检查double是否低于可能的最小整数或超过可能的最大整数,以避免整数溢出问题。获取浮点数整数部

如果我得到一个随机双精度,如何只得到int? 示例:

1114.999-将114作为整数获取

2 565.343234-将565作为整数获取。

给定值:

float f = 114.999f;
int i = (int) f;

使用强制转换将其向下转换为整数。

最简单的方法是将双精度值强制转换为整数。例如

int 114.9999==114


但是,double类型可以表示超出int范围的数字。您可能需要检查double是否低于可能的最小整数或超过可能的最大整数,以避免整数溢出问题。

获取浮点数整数部分的最简单方法是简单的强制转换:

double d = 14.999;
int i = (int)d; //14
如果您有一个像Double这样的基本包装器,那么可以使用Number的所有子类都需要提供的方法intValue。但是,由于这些是对象,因此引用可以为null,并且必须进行处理:

Double d = 14.999; //this makes use of auto-boxing
int i = d != null ? d.intValue() : 0; //here 0 is the default value if d is null
请注意,这只会截断值,因为精度问题可能导致意外结果,特别是在涉及计算时。因此,当你期望的数字是15或更高时,你可能会得到14.99999999这样的数字

另一个问题可能是,对于负值,您不会得到下一个较小的整数,但下一个较大的整数,即-14.999将被截断为-14


您应该记住这一点,如果您遇到了这些问题,请查看Math、BigDecimal等类提供的函数。

只需将其转换为:int114.999等-这将把数字截断为整数部分,即14.999->14,-14.999->14。谢谢!如果值是Double而不是Double呢?如果值是Double而不是Double呢?还有方法intValue,或者在铸造之前取消装箱的可能性,基本上是intd.doubleValue,所以intValue会更容易。当然,Double可能会出现null的问题,因此您必须处理这种情况并使用默认值,因为原语不能为null