diff options
author | biouman <biouman> | 2001-04-30 01:21:20 +0000 |
---|---|---|
committer | biouman <biouman> | 2001-04-30 01:21:20 +0000 |
commit | 51a7864b4b789583ea445af47324a9b613336162 (patch) | |
tree | 3c786d88388db0a88f65f1fe7acbe9125280fa08 /lib/numbers.c | |
parent | a578580b607c8cadf22b457d51431042e3896271 (diff) |
*** empty log message ***
Diffstat (limited to 'lib/numbers.c')
-rw-r--r-- | lib/numbers.c | 18 |
1 files changed, 8 insertions, 10 deletions
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); } |