java中将int转换float_关于浮点数:如何使用Java将float转换为int

我使用以下行将float转换为int,但是它不如我所希望的那么准确:

float a=8.61f;

int b;

b=(int)a;

结果为:8(应为9)

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

最好的方法是什么?

我应该指出,仅类型转换会截断该值,并且不会对该值执行任何舍入/除法运算。

使用Math.round()会将浮点数舍入到最接近的整数。

为什么在Math.round()之后需要进行类型转换?

Math.round()返回int值,因此使用(int)进行类型转换是多余的。

使用/或... (int)foo更简单。

Solveks的答案是正确的,但我想指出Math.round()可以基于输入具有两种不同的输出类型。 Math.round(double a)返回一个long。 Math.round(float a)返回一个int。 docs.oracle.com/javase/7/docs/api/java/lang/

与强制转换为(int)相比,Math.round()操作缓慢

实际上,有多种方法可以将float转换为int,具体取决于您要实现的结果:

(对于int i,浮点型f)

舍入(最接近给定float的整数)

i = Math.round(f);

f =  2.0 -> i =  2 ; f =  2.22 -> i =  2 ; f =  2.68 -> i =  3

f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3

注意:根据合同,这等于(int) Math.floor(f + 0.5f)

截断(即将所有内容都放在小数点后)

i = (int) f;

f =  2.0 -> i =  2 ; f =  2.22 -> i =  2 ; f =  2.68 -> i =  2

f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2

ceil / floor(整数,如果有小数部分,则始终大于/小于给定值)

i = (int) Math.ceil(f);

f =  2.0 -> i =  2 ; f =  2.22 -> i =  3 ; f =  2.68 -> i =  3

f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2

i = (int) Math.floor(f);

f =  2.0 -> i =  2 ; f =  2.22 -> i =  2 ; f =  2.68 -> i =  2

f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3

对于四舍五入正值,您也可以只使用(int)(f + 0.5),在这种情况下(根据文档),它与Math.Round完全一样。

从理论上讲,您可以使用Math.rint(f)进行四舍五入,但是rint不会将0.5向上舍入,而是将其向上或向下舍入,无论哪个较低或较高的整数都是偶数,因此在大多数情况下它是无用的。

看到

http://mindprod.com/jgloss/round.html

http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html

有关更多信息和一些示例。

哈! (int)(f + 0.5)正是我所需要的!

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

采用

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

2) a=Math.round(a);

b=(int)a;

使用Math.round(value),然后在类型转换后将其转换为整数。

float a = 8.61f;

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

Math.round(float)返回一个int,我不确定为什么要强制转换为int

Math.round还返回整数值,因此您无需进行类型转换。

int b = Math.round(float a);

其他答案已经说明了这一点。仅当您要添加新内容时,才添加新答案。 (此外,Math.round不会返回int。)

他给出了关于不需要打字的解释(对Sachithra的回答)。但是它可能会转换为注释。

对我来说,更容易:(int)(a +.5)// a是浮点数。返回舍入值。

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

这会使很多分析代码的开发人员感到困惑。尚不清楚它是舍入的。

当然,这只是基础数学,只需尝试

"基础数学"是一个相对术语。 :)根据我的经验,我敢打赌,超过50%的开发人员不会理解它确实是四舍五入的。从数学上讲这是正确的,但是正如我所写的那样,目前尚不清楚,其他人很难理解代码的作用。

-(int) ( PI 3 ):尝试使用负数a ...的代码,因为当-0.5舍入为0时?

如果数字是负数,您就对了,您必须添加-0.5来代替

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值