improve docs for #truncate, #floor, and #ceil methods

* numeric.c: [DOC] improve and harmonize documentation
  for {Float,Integer,Numeric}#{truncate,floor,ceil}.
* rational.c: [DOC] ditto for Rational#{truncate,floor,ceil}.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
stomar 2017-04-03 19:23:13 +00:00
parent d9e1cfe219
commit 5f22cfcc30
2 changed files with 125 additions and 85 deletions

174
numeric.c
View File

@ -1936,31 +1936,34 @@ flo_prev_float(VALUE vx)
* call-seq:
* float.floor([ndigits]) -> integer or float
*
* Returns the largest number less than or equal to +float+ in
* decimal digits (default 0 digits).
* Returns the largest number less than or equal to +float+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* Precision may be negative. Returns a floating point number when +ndigits+
* is positive, +self+ for zero, and floor down for negative.
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* Returns a floating point number when +ndigits+ is positive,
* otherwise returns an integer.
*
* 1.2.floor #=> 1
* 2.0.floor #=> 2
* (-1.2).floor #=> -2
* (-2.0).floor #=> -2
*
* 1.234567.floor(2) #=> 1.23
* 1.234567.floor(3) #=> 1.234
* 1.234567.floor(4) #=> 1.2345
* 1.234567.floor(5) #=> 1.23456
* 1.234567.floor(2) #=> 1.23
* 1.234567.floor(3) #=> 1.234
* 1.234567.floor(4) #=> 1.2345
* 1.234567.floor(5) #=> 1.23456
*
* 34567.89.floor(-5) #=> 0
* 34567.89.floor(-4) #=> 30000
* 34567.89.floor(-3) #=> 34000
* 34567.89.floor(-2) #=> 34500
* 34567.89.floor(-1) #=> 34560
* 34567.89.floor(0) #=> 34567
* 34567.89.floor(1) #=> 34567.8
* 34567.89.floor(2) #=> 34567.89
* 34567.89.floor(3) #=> 34567.89
* 34567.89.floor(-5) #=> 0
* 34567.89.floor(-4) #=> 30000
* 34567.89.floor(-3) #=> 34000
* 34567.89.floor(-2) #=> 34500
* 34567.89.floor(-1) #=> 34560
* 34567.89.floor(0) #=> 34567
* 34567.89.floor(1) #=> 34567.8
* 34567.89.floor(2) #=> 34567.89
* 34567.89.floor(3) #=> 34567.89
*/
static VALUE
@ -1995,30 +1998,34 @@ flo_floor(int argc, VALUE *argv, VALUE num)
* call-seq:
* float.ceil([ndigits]) -> integer or float
*
* Returns the smallest number greater than or equal to +float+ in decimal
* digits (default 0 digits).
* Returns the smallest number greater than or equal to +float+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* Precision may be negative. Returns a floating point number when +ndigits+
* is positive, +self+ for zero, and ceil up for negative.
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* Returns a floating point number when +ndigits+ is positive,
* otherwise returns an integer.
*
* 1.2.ceil #=> 2
* 2.0.ceil #=> 2
* (-1.2).ceil #=> -1
* (-2.0).ceil #=> -2
* 1.234567.ceil(2) #=> 1.24
* 1.234567.ceil(3) #=> 1.235
* 1.234567.ceil(4) #=> 1.2346
* 1.234567.ceil(5) #=> 1.23457
*
* 34567.89.ceil(-5) #=> 100000
* 34567.89.ceil(-4) #=> 40000
* 34567.89.ceil(-3) #=> 35000
* 34567.89.ceil(-2) #=> 34600
* 34567.89.ceil(-1) #=> 34570
* 34567.89.ceil(0) #=> 34568
* 34567.89.ceil(1) #=> 34567.9
* 34567.89.ceil(2) #=> 34567.89
* 34567.89.ceil(3) #=> 34567.89
* 1.234567.ceil(2) #=> 1.24
* 1.234567.ceil(3) #=> 1.235
* 1.234567.ceil(4) #=> 1.2346
* 1.234567.ceil(5) #=> 1.23457
*
* 34567.89.ceil(-5) #=> 100000
* 34567.89.ceil(-4) #=> 40000
* 34567.89.ceil(-3) #=> 35000
* 34567.89.ceil(-2) #=> 34600
* 34567.89.ceil(-1) #=> 34570
* 34567.89.ceil(0) #=> 34568
* 34567.89.ceil(1) #=> 34567.9
* 34567.89.ceil(2) #=> 34567.89
* 34567.89.ceil(3) #=> 34567.89
*/
static VALUE
@ -2357,10 +2364,19 @@ flo_to_i(VALUE num)
* call-seq:
* float.truncate([ndigits]) -> integer or float
*
* Truncates +float+ to a given precision in decimal digits (default 0 digits).
* Returns +float+ truncated (toward zero) to
* a precision of +ndigits+ decimal digits (default: 0).
*
* Precision may be negative. Returns a floating point number when +ndigits+
* is more than zero.
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* Returns a floating point number when +ndigits+ is positive,
* otherwise returns an integer.
*
* 2.8.truncate #=> 2
* (-2.8).truncate #=> -2
* 1.234567.truncate(2) #=> 1.23
* 34567.89.truncate(-2) #=> 34500
*/
static VALUE
flo_truncate(int argc, VALUE *argv, VALUE num)
@ -2403,13 +2419,11 @@ flo_negative_p(VALUE num)
* call-seq:
* num.floor([ndigits]) -> integer or float
*
* Returns the largest integer less than or equal to +num+.
* Returns the largest number less than or equal to +num+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* Numeric implements this by converting an Integer to a Float and invoking
* Float#floor.
*
* 1.floor #=> 1
* (-1).floor #=> -1
* Numeric implements this by converting its value to a Float and
* invoking Float#floor.
*/
static VALUE
@ -2423,16 +2437,11 @@ num_floor(int argc, VALUE *argv, VALUE num)
* call-seq:
* num.ceil([ndigits]) -> integer or float
*
* Returns the smallest possible Integer that is greater than or equal to
* +num+.
* Returns the smallest number greater than or equal to +num+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* Numeric achieves this by converting itself to a Float then invoking
* Float#ceil.
*
* 1.ceil #=> 1
* 1.2.ceil #=> 2
* (-1.2).ceil #=> -1
* (-1.0).ceil #=> -1
* Numeric implements this by converting its value to a Float and
* invoking Float#ceil.
*/
static VALUE
@ -2462,10 +2471,11 @@ num_round(int argc, VALUE* argv, VALUE num)
* call-seq:
* num.truncate([ndigits]) -> integer or float
*
* Returns +num+ truncated to an Integer.
* Returns +num+ truncated (toward zero) to
* a precision of +ndigits+ decimal digits (default: 0).
*
* Numeric implements this by converting its value to a Float and invoking
* Float#truncate.
* Numeric implements this by converting its value to a Float and
* invoking Float#truncate.
*/
static VALUE
@ -5069,15 +5079,19 @@ int_round(int argc, VALUE* argv, VALUE num)
* call-seq:
* int.floor([ndigits]) -> integer or float
*
* Returns the largest number less than or equal to +int+ in decimal
* digits (default 0 digits).
* Returns the largest number less than or equal to +int+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* Precision may be negative. Returns a floating point number when +ndigits+
* is positive, +self+ for zero, and floor down for negative.
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* 1.floor #=> 1
* 1.floor(2) #=> 1.0
* 15.floor(-1) #=> 10
* Returns a floating point number when +ndigits+ is positive,
* +self+ for zero, and an integer for negative.
*
* 1.floor #=> 1
* 1.floor(2) #=> 1.0
* 18.floor(-1) #=> 10
* (-18).floor(-1) #=> -20
*/
static VALUE
@ -5101,15 +5115,19 @@ int_floor(int argc, VALUE* argv, VALUE num)
* call-seq:
* int.ceil([ndigits]) -> integer or float
*
* Returns the smallest number than or equal to +int+ in decimal
* digits (default 0 digits).
* Returns the smallest number greater than or equal to +int+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* Precision may be negative. Returns a floating point number when +ndigits+
* is positive, +self+ for zero, and ceil up for negative.
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* 1.ceil #=> 1
* 1.ceil(2) #=> 1.0
* 15.ceil(-1) #=> 20
* Returns a floating point number when +ndigits+ is positive,
* +self+ for zero, and an integer for negative.
*
* 1.ceil #=> 1
* 1.ceil(2) #=> 1.0
* 18.ceil(-1) #=> 20
* (-18).ceil(-1) #=> -10
*/
static VALUE
@ -5133,15 +5151,19 @@ int_ceil(int argc, VALUE* argv, VALUE num)
* call-seq:
* int.truncate([ndigits]) -> integer or float
*
* Returns the smallest number than or equal to +int+ in decimal
* digits (default 0 digits).
* Returns +int+ truncated (toward zero) to
* a precision of +ndigits+ decimal digits (default: 0).
*
* Precision may be negative. Returns a floating point number when +ndigits+
* is positive, +self+ for zero, and truncate up for negative.
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* 1.truncate #=> 1
* 1.truncate(2) #=> 1.0
* 15.truncate(-1) #=> 10
* Returns a floating point number when +ndigits+ is positive,
* +self+ for zero, and an integer for negative.
*
* 1.truncate #=> 1
* 1.truncate(2) #=> 1.0
* 18.truncate(-1) #=> 10
* (-18).truncate(-1) #=> -10
*/
static VALUE

View File

@ -1438,10 +1438,16 @@ f_round_common(int argc, VALUE *argv, VALUE self, VALUE (*func)(VALUE))
/*
* call-seq:
* rat.floor -> integer
* rat.floor(precision=0) -> integer or rational
* rat.floor([ndigits]) -> integer or rational
*
* Returns the truncated value (toward negative infinity).
* Returns the largest number less than or equal to +rat+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* Returns a rational when +ndigits+ is positive,
* otherwise returns an integer.
*
* Rational(3).floor #=> 3
* Rational(2, 3).floor #=> 0
@ -1462,10 +1468,16 @@ nurat_floor_n(int argc, VALUE *argv, VALUE self)
/*
* call-seq:
* rat.ceil -> integer
* rat.ceil(precision=0) -> integer or rational
* rat.ceil([ndigits]) -> integer or rational
*
* Returns the truncated value (toward positive infinity).
* Returns the smallest number greater than or equal to +rat+ with
* a precision of +ndigits+ decimal digits (default: 0).
*
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* Returns a rational when +ndigits+ is positive,
* otherwise returns an integer.
*
* Rational(3).ceil #=> 3
* Rational(2, 3).ceil #=> 1
@ -1486,10 +1498,16 @@ nurat_ceil_n(int argc, VALUE *argv, VALUE self)
/*
* call-seq:
* rat.truncate -> integer
* rat.truncate(precision=0) -> integer or rational
* rat.truncate([ndigits]) -> integer or rational
*
* Returns the truncated value (toward zero).
* Returns +rat+ truncated (toward zero) to
* a precision of +ndigits+ decimal digits (default: 0).
*
* When the precision is negative, the returned value is an integer
* with at least <code>ndigits.abs</code> trailing zeros.
*
* Returns a rational when +ndigits+ is positive,
* otherwise returns an integer.
*
* Rational(3).truncate #=> 3
* Rational(2, 3).truncate #=> 0