#!/usr/bin/ruby

# Arbitrary long division
#  usage: divide(x, y, precision)

func divide (x,y,f) {

    var c = 0;
    var z = '';

    func {
        var i = (x / y -> int);

        z += i.to_s;
        x -= (y * i);

        var s = -1;
        while (y > x) {
            x *= 10; s++; x.is_zero && break
        }

        c.is_zero && (z += '.');
        s.is_pos  && (z += ('0' * s));
        c += (s + 1);

        c <= f && __FUNC__();
      }();

    return z;
}

say divide(42.5, 232.7, 24);
