diff options
Diffstat (limited to 'math.c')
-rw-r--r-- | math.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -15,7 +15,20 @@ VALUE rb_mMath; -#define Need_Float(x) (x) = rb_Float(x) +static VALUE +to_flo(VALUE x) +{ + if (!rb_obj_is_kind_of(x, rb_cNumeric)) { + rb_raise(rb_eTypeError, "can't convert %s into Float", + NIL_P(x) ? "nil" : + x == Qtrue ? "true" : + x == Qfalse ? "false" : + rb_obj_classname(x)); + } + return rb_convert_type(x, T_FLOAT, "Float", "to_f"); +} + +#define Need_Float(x) (x) = to_flo(x) #define Need_Float2(x,y) do {\ Need_Float(x);\ Need_Float(y);\ |