Quand je convertis une chaîne de caractères en float, et je l’utilise dans mes calcule je perds des données après le virgule exemple:
602.1 – 180 = 422.09998
Quand je convertis une chaîne de caractères en float, et je l’utilise dans mes calcule je perds des données après le virgule exemple:
602.1 – 180 = 422.09998
float amountHT =602.1f;
amountHt = Float.parseFloat(text16.getText());
float fltAmount = 0.0f;
fltAmount = amountHT - amountHt;
les float ne sont pas extrêment précis, remplaces les par des doubles, ou encore mieux de BigDecimal, ça ira tout de suite mieux.
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Une idée serait sans doute d'utiliser l'objet DecimalFormat.
@++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag
Je ne répond à aucune question technique par MP.
La cause du problème est simplement la représentation binaire d'un flottant... 0.1 ne tombe pas juste en binaire, et il faudrait un nombre infini de bits significatifs pour le représenter. Pas de chance, les floats n'ont pas un nombre infini de bits significatifs (sinon faudrait beaucoup de mémoire), ils n'en ont que 24 (23 + implicite). Donc il y a de la perte...Envoyé par aliomrani1
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager