Android Float To Int
为什么这么难找到?Android Float To Int
public boolean onTouch(View v, MotionEvent event)
我需要将float event.getY()
转换为int。
这可能吗?
event.getY().intValue()
根本不起作用。
任何想法?
唔,嗯,怎么样:
int y = (int)event.getY();
你看getY()
只返回一个float用于具有子像素精度的设备。
只投它:
int val = (int)event.getY();
这真的是一个评论,而不是问题的答案。请使用“添加评论”为作者留下反馈。 – Gaffi 2012-08-22 14:24:40
使用
Math.round(yourFloat);
优于
(int)yourFloat;
这是所有关于精度。如果您使用(int)
,您将在删除点后获得数字。如果您使用Math
,则会得到一个舍入数字。例如,如果您尝试对3.1进行舍入,那么这两种方法都会产生相同的结果 - 3.
但是取3.9或3.8。这实际上是4,但
(int)3.9 = 3
而
Math.round(3.9) = 4
怎么样(int)(some_float + 0.5)? – 2015-12-25 23:10:56
结果取决于'some_float'的值。如果它在点之后有一个小数点,例如x.5到x.9,那么结果将是x + 1'(x.5 + 0.5 = x + 1)',如果x.0到x.04 - 只是x' (x.4 + 0.5 = x.9)'。但是,这仍然不会像Math.round一样工作。 1.46 + 0.5 = 1.96。 (int)1.96 = 1.在这种情况下,要获得精确的结果,您需要具有some_float + 0.5555555555 ... infinity – 2015-12-26 10:36:59
我没有看到问题。我预计1.46会小于1.5,因此会被舍入为1。 – 2015-12-26 23:57:39
Math.round()将浮动四舍五入到最接近的整数。
它总是返回一个浮点数。也许你的意思是浮点数表示一个整数? – 2010-06-11 16:54:21
正确。在没有亚像素精度的设备上,浮点数总是类似于235.0。你可以投射到一个int来获得像素值。 – CaseyB 2010-06-11 17:02:15
感谢这工作。 – shaneburgess 2010-06-11 21:14:53