summaryrefslogtreecommitdiff
path: root/lib/numbers.c
diff options
context:
space:
mode:
authorbiouman <biouman>2001-04-30 01:21:20 +0000
committerbiouman <biouman>2001-04-30 01:21:20 +0000
commit51a7864b4b789583ea445af47324a9b613336162 (patch)
tree3c786d88388db0a88f65f1fe7acbe9125280fa08 /lib/numbers.c
parenta578580b607c8cadf22b457d51431042e3896271 (diff)
*** empty log message ***
Diffstat (limited to 'lib/numbers.c')
-rw-r--r--lib/numbers.c18
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);
}