爲什麼這麼難找到?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