From 51a7864b4b789583ea445af47324a9b613336162 Mon Sep 17 00:00:00 2001 From: biouman Date: Mon, 30 Apr 2001 01:21:20 +0000 Subject: *** empty log message *** --- lib/numbers.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'lib/numbers.c') diff --git a/lib/numbers.c b/lib/numbers.c index af8a9bb..52af66d 100644 --- a/lib/numbers.c +++ b/lib/numbers.c @@ -6,6 +6,7 @@ #include "numbers.h" +#include "scalaires.h" /* Cette fonction lit un nombre. Elle va chercher absolument à traduire la chaîne passée en argument en un nombre. Si ce nombre n'est pas valide, alors l'int valid est mis à faux. Cette fonction reconnais les nombres en décimaux, les nombres @@ -71,22 +72,20 @@ int char_to_number(char *st, int *valid) } -/* TODO: Rajouter la precision dans les valeurs retournees */ -double char_to_double(char *st, int *valid) /* cette fonction tente de traduire une chaine en flottant */ +rationnel char_to_rat(char *st, int *valid) /* cette fonction tente de traduire une chaine en flottant */ { - unsigned int dotnum = 0; - unsigned int deci = 1; - double result = 0; + int dotnum = 0, deci = 1, temp = 0; + while (*st) { if (*st == '.') { dotnum++; } else { if ((*st < '0') || (*st > '9') || (dotnum > 1)) { *valid = 0; - return 0; + return rat_constr_zero(); } else { - result *= 10; - result += *st - '0'; + temp *= 10; + temp += *st - '0'; if (dotnum == 1) deci *= 10; } @@ -94,7 +93,6 @@ double char_to_double(char *st, int *valid) /* cette fonction tente de traduire st++; } - result = result / deci; *valid = 1; - return result; + return rat_constr(temp, deci); } -- cgit v1.2.3