Android Float En Int
Pourquoi est-ce si difficile à trouver?
public boolean onTouch(View v, MotionEvent event)
J'ai besoin de convertir float event.getY()
à un int.
Est-ce possible?
event.getY().intValue()
ne fonctionnera pas du tout.
Des idées?
OriginalL'auteur shaneburgess | 2010-06-11
Vous devez vous connecter pour publier un commentaire.
Euh, ouais, comment au sujet de:
Vous voir
getY()
seulement renvoie un float pour les appareils dotés d'un sous-pixel près.Correct. Sur les appareils qui n'ont pas de sous-pixel précision le flotteur est toujours quelque chose comme 235.0. Vous pouvez jeter un int pour obtenir la valeur du pixel.
Merci cela a fonctionné.
OriginalL'auteur CaseyB
À l'aide de
Math.round(yourFloat);
est mieux que
(int)yourFloat;
Il est tout au sujet de la précision. Si vous utilisez
(int)
, vous ne trouverez que les chiffres après le point retiré. Si vous utilisezMath
, vous obtiendrez un nombre arrondi. Il ne semble pas comme un gros problème.Par exemple, si vous essayez d'arrondir quelque chose comme 3.1, les deux méthodes produisent le même résultat - 3.Mais prendre 3.9 ou 3.8. Il est pratiquement 4, encore
(int)3.9 = 3
alors que
Math.round(3.9) = 4
Le résultat dépend de la valeur de
some_float
. Si il y a 1 décimales après le point, comme x.5 à x.9, alors le résultat sera x + 1(x.5 + 0.5 = x+1)
, si x.De 0 à x.04 - juste x(x.4 + 0.5 = x.9)
. Mais encore, cela ne fonctionne pas comme les Maths.la ronde. 1.46 + 0.5 = 1.96. (int)1.96 = 1. Dans ce cas, pour obtenir de résultat précis, vous auriez besoin d'avoir some_float + 0.5555555555 l'infini...Je ne vois pas le problème. Je m'attends à 1.46 être arrondi à 1 car il est inférieur à 1,5.
Ici: 1.46->1.5->2
Je pense que vous êtes l'incompréhension comment arrondir œuvres. L'arrondi n'est pas récursive. Si vous voulez arrondir au plus proche incrément, puis tout ce qui est fait est une comparaison avec le point à mi-chemin. Si l'entrée est plus grande, ronde. Si elle est plus petite, ronde en bas. Si elle est égale, puis de la pratique généralement acceptée est de round up. 1.46 est plus proche de 1 que 2, donc si vous êtes en l'arrondissant à l'entier le plus proche, vous permettra d'arrondir à 1.
OriginalL'auteur Oleksandr Firsov
Juste de voter pour elle:
OriginalL'auteur Matthew Flaschen
Mathématiques.round() arrondit le flotteur à l'entier le plus proche.
OriginalL'auteur Makvin