salut67
Messages postés27Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention 1 novembre 2018
-
31 oct. 2018 à 15:13
salut67
Messages postés27Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention 1 novembre 2018
-
1 nov. 2018 à 08:47
Bonjour,
j'ai une base et des données que je ne gère pas, mais que j'utilise. Une colonne au format double me pose problème. Exemple :
db2 => select x from mytable
X
------------------------
+1,00000000000000E-001
+1,00000000000000E-001
+1,00000000000000E-001
+1,00000000000000E-001
4 record(s) selected.
db2 => select case x when 0.1 then 'O' else 'N' end from mytable
1
-
N
N
O
O
Le SELECT me donne la même valeur 0.1 pour toutes les lignes. Mais le CASE indique le contraire. Que les valeurs ne soient pas "exactement " 0.1, je veux bien, mais le SELECT ne devrait-il pas alors afficher quelque chose du genre +9,999999999999E-002 ?
Je lis les données depuis un programme C qui semble alors tomber dans le même travers : une comparaison indique que seules 2 données sont à 0,1 mais quand je les affiche par printf('%g") elles sont toutes à 0,1 !
Du coup, je n'arrive pas à exploiter correctement cette donnée. Une explication ? Une idée de la manière de les lire ? Merci bien.
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 31 oct. 2018 à 18:41
Faire un test d'égalité sur est flottants est une grosse erreur.
Et il t'affiche 1.0E-1 car il arrondi le dernier chiffre à l'affichage.
Je te recommande plutôt de faire une fourchette genre >0.99999998 && <1.000000001
Pour l'affichage, c'est à toi de remettre en forme au moment de l'affichage.
salut67
Messages postés27Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention 1 novembre 2018 1 nov. 2018 à 08:47
Merci de cette réponse rapide, c'est ce que je craignais.
Pas joli (désolé), pas pratique à maintenir (si j'ai d'autres bornes comme ce 0.1), mais je viens de la mettre en place, ça semble fonctionner.
Je prends.
1 nov. 2018 à 08:47
Pas joli (désolé), pas pratique à maintenir (si j'ai d'autres bornes comme ce 0.1), mais je viens de la mettre en place, ça semble fonctionner.
Je prends.