如果我得到一个随机双精度数,如何只获得整数? 范例:
1)114.999-将“ 114”作为整数获取
2)565.343234-将“ 565”作为整数。
答案 0 :(得分:1)
给出值:
float f = 114.999f;
int i = (int) f;
使用演员表将其转换为整数。
答案 1 :(得分:1)
最简单的方法是将double值转换为int。例如,
(int) 114.9999 == 114
但是,双精度型可以表示超出整数范围的数字。您可能需要检查double是否小于最小可能整数或大于最大可能整数,以免出现整数溢出问题。
答案 2 :(得分:1)
获取浮点数的整数部分的最简单方法是简单的强制转换:
double d = 14.999;
int i = (int)d; //14
如果您有像Double
这样的原始包装器,则可以使用intValue()
的所有子类都需要提供的方法Number
。但是,由于这些是对象,因此引用可以为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.999999999的数字。
另一个问题可能是,您不会获得负值的下一个较小的整数,而是下一个较高的整数,即-14.999将被截断为-14。
您应该牢记这一点,如果遇到这些问题,请查看类Math
,BigDecimal
等提供的功能。