我使用下面的行来转换浮点数为int,但它不是像我想要的那样准确:

 float a=8.61f;
 int b;

 b=(int)a;

结果是:8(它应该是9)

当a = -7.65f时,结果是:-7(它应该是-8)

最好的方法是什么?


当前回答

round(value)将值四舍五入到最接近的整数。

Use

1) b=(int)(Math.round(a));

2) a=Math.round(a);  
   b=(int)a;

其他回答

round(value)将值四舍五入到最接近的整数。

Use

1) b=(int)(Math.round(a));

2) a=Math.round(a);  
   b=(int)a;

如果您想将浮点值转换为整数值,有几种方法可以实现,这取决于您想如何四舍五入浮点值。

第一种方法是浮点值的舍入:

float myFloat = 3.14f;
int myInteger = (int)myFloat;

这段代码的输出将是3,即使myFloat值更接近4。

第二种方法是浮点值的四舍五入:

float myFloat = 3.14f;
int myInteger = Math.ceil(myFloat);

这段代码的输出将是4,因为舍入模式总是在寻找最大值。

数学。Round还返回一个整数值,因此不需要类型转换。

int b = Math.round(float a);

通过将Float原语传递给构造函数来实例化Float对象,然后使用您创建的Float对象返回int原语。

Explanation
Since number wrapper classes extend the java.lang.Number class, you can have any number wrapper object return any other number primitive type by using the .<type>Value() method.

步骤

创建一个Float对象 使用. intvalue()方法返回一个原语int。

例子

Float mFloat = Float.valueOf(8.65f);
int i = mFloat.intValue();

对我来说,更简单:(int) (a +.5) // a是浮点数。返回四舍五入的值。

不依赖于Java Math.round()类型