let big_int_of_float n =
let negative, n = if n < 0.0 then true, -.n else false, n in
let ten = big_int_of_int 10 in
let rec continue n =
if n < 1.0 then
zero_big_int
else
let r = mod_float n 10.0 in
let n = (n -. r) /. 10.0 in
let r = big_int_of_int (int_of_float r) in
add_big_int (mult_big_int (continue n) ten) r
in
let n = continue n in
if negative then Big_int.minus_big_int n else n