为什么这么难找到?Android Float To Int
public boolean onTouch(View v, MotionEvent event)
我需要将float event.getY()
转换为int。
这可能吗?
event.getY().intValue()
根本不起作用。
任何想法?
为什么这么难找到?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