Arrondi d'un point floattant - Ada - Programmation
Marsh Posté le 23-01-2009 à 18:39:18
Il y a un attribut (de memoire: T_Alphabet'Round(var_real)). Est-tu sur que tu ne voudrais pas
plutot
Code :
|
pour avoir un type decimal?
Marsh Posté le 23-01-2009 à 19:29:49
Un Programmeur a écrit :
|
C'est possible ! Parce qu'en effet, l'attribut Round prend un préfixe de type décmal.
Je suis un peu dans la confusion avec ce genre de type.
J'ai testé une simple conversion : Var_Alphabet := T_Alphabet(Var_Real); ça donne pas mal.
Je vais voir ce que me dis le compilateur en déclarant mo type T_Alphabet comme tu le suggères.
Marsh Posté le 23-01-2009 à 19:59:36
j'ai déclaré le type T_Alphabet is deltat 0.01 digits 2; Et à l'utilisation de l'attribut Round Constraint_Error(Range check failed) est levée.
T'es sûr de ton coup ?
Marsh Posté le 23-01-2009 à 20:18:10
Avec Var_Real = 9.999*E-01, Je remarque qu'une simple conversion lève la même erreur.
Marsh Posté le 23-01-2009 à 20:22:06
Ca fait 10 ans que je n'ai plus fait d'Ada. Mais ceci a l'air de faire ce que tu veux.
Code :
|
Marsh Posté le 23-01-2009 à 20:45:06
Un Programmeur a écrit :
|
Oui, ton programme fonctionne. Mais avec une valeur de X telle que 9.999E-02, ça ne fonctionne plus.
Marsh Posté le 23-01-2009 à 21:46:30
Merci Un Programmeur !
j'ai pigé pourquoi 9.999E-1 lève un erreur de contrainte.
Marsh Posté le 24-01-2009 à 10:16:30
Pour les archives: 0.999E-1 est arrondi à 1.00 et le type décimal delta 0.01 digits 2 ne représente des valeurs que jusqu'à 0.99.
Marsh Posté le 23-01-2009 à 18:16:00
Bonjour,
j'ai définit un type point fixe de la manière suivante :
Et j'utilise un un type point flottant définit comme suit :
Je souhaite obtenir l'arrondi à 0.01 pré du type Real pour l'affecter au type T_Alphabet.
Exemple :
var_real = 9.59600000000000E-2 => je veux affecter 0.1 à une variable de type T_Alphabet.
Comment faire ? Merci.