summaryrefslogtreecommitdiff
path: root/math.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-16 04:17:45 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-16 04:17:45 +0000
commitf970ffedaebf447da3617c1825b5365ce45a40fd (patch)
tree2371c51ea4f8d5acadf6971f044b6012c465d0db /math.c
parentb8118e9645ca5e656975b6dae9ac88219fecee23 (diff)
* math.c (to_flo): rb_Float() accepts even strings for input.
* complex.c (nucomp_to_f): fix wrong message. * complex.c (nucomp_to_r): ditto. * object.c (rb_Float): do not check NaN for error. NaN is a part of valid float values. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'math.c')
-rw-r--r--math.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/math.c b/math.c
index fe25c4c0a0..37d019bc70 100644
--- a/math.c
+++ b/math.c
@@ -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);\