2010-06-11 7 views
3

Pourquoi est-ce si difficile à trouver? J'ai besoin de convertir float event.getY() en un int.Android Float To Int

Est-ce possible?

event.getY().intValue() ne fonctionnera pas du tout.

Des idées?

Répondre

17

Uhhh, oui, que diriez-vous:

int y = (int)event.getY(); 

Vous voyez getY() retourne uniquement un flotteur pour les appareils qui ont une précision sous-pixel.

+0

Il renvoie toujours un flotteur. Peut-être que vous voulez dire que le flotteur représente un nombre entier? –

+3

Correct. Sur les appareils qui n'ont pas de précision sous-pixel, le flottant est toujours quelque chose comme 235.0. Vous pouvez simplement lancer un int pour obtenir la valeur du pixel. – CaseyB

+0

Merci cela a fonctionné. – shaneburgess

0

Juste jetteras:

int val = (int)event.getY(); 
+0

Ceci est vraiment un commentaire, pas une réponse à la question. Veuillez utiliser "ajouter un commentaire" pour laisser un commentaire à l'auteur. – Gaffi

2

en utilisant

Math.round(yourFloat);

est mieux que

(int)yourFloat;

Il est tout au sujet de la précision. Si vous utilisez (int), vous obtiendrez des nombres après le retrait du point. Si vous utilisez Math, vous obtiendrez un nombre arrondi. Il ne semble pas comme un grand exemple deal.For, si vous essayez d'arrondir quelque chose comme 3.1, les deux méthodes produiraient le même résultat - 3.

Mais prendre 3.9 ou 3.8. Il est pratiquement 4, mais

(int)3.9 = 3

alors

Math.round(3.9) = 4

+0

Qu'en est-il de (int) (some_float + 0.5)? –

+0

Le résultat dépend de la valeur de 'some_float'. S'il a 1 point après le point, comme x.5 à x.9, alors le résultat sera x + 1 '(x.5 + 0.5 = x + 1)', si x.0 à x.04 - juste x ' (x.4 + 0.5 = x.9) '. Mais encore, cela ne fonctionnera pas comme Math.round. 1,46 + 0,5 = 1,96. (int) 1.96 = 1. Dans ce cas, pour obtenir un résultat précis, vous devez avoir un certain float + 0.5555555555 ... infinity –

+0

Je ne vois pas le problème. Je m'attendais à ce que 1,46 soit arrondi à 1 car il est inférieur à 1,5. –

0

Math.round() va arrondir le flotteur entier le plus proche.