Correction big_int_of_string

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1300 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
master
Xavier Leroy 1997-02-25 14:40:34 +00:00
parent 6288fc71e0
commit d770d2cbd9
1 changed files with 12 additions and 5 deletions

View File

@ -341,11 +341,18 @@ let string_of_big_int bi =
let sys_big_int_of_string s ofs len =
let (sign, nat) =
if String.get s ofs = '-'
then (-1, sys_nat_of_string 10 s (ofs+1) (len-1))
else ( 1, sys_nat_of_string 10 s ofs len) in
{ sign = if is_zero_nat nat 0 (length_nat nat) then 0 else sign;
abs_value = nat }
match nth_char s ofs with
`-` -> if len > 1
then (-1, sys_nat_of_string 10 s (ofs+1) (len-1))
else failwith "sys_big_int_of_string"
| `+` -> if len > 1
then (1, sys_nat_of_string 10 s (ofs+1) (len-1))
else failwith "sys_big_int_of_string"
| _ -> if len > 0
then (1, sys_nat_of_string 10 s ofs len)
else failwith "sys_big_int_of_string" in
{ Sign = if is_zero_nat nat 0 (length_nat nat) then 0 else sign;
Abs_Value = nat }
let big_int_of_string s =
sys_big_int_of_string s 0 (String.length s)