Erreur d'addition ?!

Résolu
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 - 15 oct. 2005 à 12:48
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020 - 15 oct. 2005 à 19:39
bonjour,

import java.text.DecimalFormat;

public class MaClass {
public static void main(String[] args) {
DecimalFormat forma = new DecimalFormat("00");
double nb1 = 1e16;
double nb2 = 1;
double nb3 = nb1 + nb2;
System.out.println(""+forma.format(nb3));
}
}
ce code m'affiche 10000000000000000 au lieu de 10000000000000001.
que ce passe t'il et comment y remedier ?

merci a vous,

alonsyl

1 réponse

kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
15 oct. 2005 à 19:39
un nombre en notation à virgule flotante se compose de la mantise, du
signe et de l'exposant.la mantise est le nombre de chiffre
significatif. dans le cas d'un double elle est limité à 16 chiffres.

la solution serait d'avoir deux variables stockant l'une les 10
premiers chiffres significatifs et l'autre les 10 dernir chiffres.
faire comme à 44l'école primaire lorsque l'on faisait une addition.
j'additionne les unités. si le résualtat dépasse dix je retiens 1 sur
les dizaines et ainsi de suite.
3
Rejoignez-nous