Android Float 到 Int
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3024624/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Android Float To Int
提问by shaneburgess
Why is this so hard to find out?
为什么这很难找到?
public boolean onTouch(View v, MotionEvent event)
I need to convert float event.getY()
to an int.
我需要转换float event.getY()
为int。
Is this possible?
这可能吗?
event.getY().intValue()
will not work at all.
event.getY().intValue()
根本不会工作。
Any ideas?
有任何想法吗?
回答by CaseyB
Uhhh, yeah, how about:
呃,是的,怎么样:
int y = (int)event.getY();
You see getY()
only returns a float for devices that have a sub-pixel accuracy.
您会看到getY()
仅返回具有子像素精度的设备的浮点数。
回答by Oleksandr Firsov
Using
使用
Math.round(yourFloat);
Math.round(yourFloat);
is better than
比
(int)yourFloat;
(int)yourFloat;
It is all about precision. If you use (int)
you'll just get numbers after the point removed. If you use Math
, you'll get a rounded number. It doesn't seems like a big deal.For example, if you try to round something like 3.1, both methods would produce the same result - 3.
这一切都与精度有关。如果您使用,(int)
您将在删除点后获得数字。如果您使用Math
,您将得到一个四舍五入的数字。这似乎没什么大不了的。例如,如果您尝试对 3.1 之类的东西进行四舍五入,则两种方法都会产生相同的结果 - 3。
But take 3.9 or 3.8. It's practically 4, yet
但是取 3.9 或 3.8。它实际上是 4,但
(int)3.9 = 3
(int)3.9 = 3
whereas
然而
Math.round(3.9) = 4
Math.round(3.9) = 4
回答by Makvin
Math.round() will round the float to the nearest integer.
Math.round() 会将浮点数四舍五入到最接近的整数。
回答by Matthew Flaschen
Just cast it:
只需投射它:
int val = (int)event.getY();