From d25af1f44e8920e15c5cab7808757e28fa9f6492 Mon Sep 17 00:00:00 2001 From: S-H-GAMELINKS Date: Sun, 3 Oct 2021 17:16:58 +0900 Subject: Add flo_ndigits function --- numeric.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'numeric.c') diff --git a/numeric.c b/numeric.c index 3b481b3869..4a4a128bb5 100644 --- a/numeric.c +++ b/numeric.c @@ -1876,13 +1876,19 @@ rb_float_floor(VALUE num, int ndigits) * (0.3 / 0.1).floor #=> 2 (!) */ -static VALUE -flo_floor(int argc, VALUE *argv, VALUE num) +static int +flo_ndigits(int argc, VALUE *argv) { - int ndigits = 0; if (rb_check_arity(argc, 0, 1)) { - ndigits = NUM2INT(argv[0]); + return NUM2INT(argv[0]); } + return 0; +} + +static VALUE +flo_floor(int argc, VALUE *argv, VALUE num) +{ + int ndigits = flo_ndigits(argc, argv); return rb_float_floor(num, ndigits); } @@ -1928,11 +1934,7 @@ flo_floor(int argc, VALUE *argv, VALUE num) static VALUE flo_ceil(int argc, VALUE *argv, VALUE num) { - int ndigits = 0; - - if (rb_check_arity(argc, 0, 1)) { - ndigits = NUM2INT(argv[0]); - } + int ndigits = flo_ndigits(argc, argv); return rb_float_ceil(num, ndigits); } -- cgit v1.2.3