what's the difference about "LONG2NUM and LONG2FIX" in ruby c api?
why not "return LONG2FIX after FIX2LONG"??
thanks.
ruby source file(numeric.c):
/*
* call-seq:
* fix.abs -> aFixnum
···
*
* Returns the absolute value of <i>fix</i>.
*
* -12345.abs #=> 12345
* 12345.abs #=> 12345
*
*/
static VALUE
fix_abs(fix)
VALUE fix;
{
long i = FIX2LONG(fix);
if (i < 0) i = -i;
return LONG2NUM(i);
}
--
Posted via http://www.ruby-forum.com/.
Haoqi Haoqi wrote:
what's the difference about "LONG2NUM and LONG2FIX" in ruby c api?
LONG2FIX will truncate into a Fixnum (a 31 bit signed integer). LONG2NUM will convert to Bignum (arbitrary precision integer) if necessary.
why not "return LONG2FIX after FIX2LONG"??
thanks.
(-2**30).class # => Fixnum
(2**30).class # => Bignum
(-2**30).abs.class # => Bignum
···
ruby source file(numeric.c):
/*
* call-seq:
* fix.abs -> aFixnum
*
* Returns the absolute value of <i>fix</i>.
*
* -12345.abs #=> 12345
* 12345.abs #=> 12345
*
*/
static VALUE
fix_abs(fix)
VALUE fix;
{
long i = FIX2LONG(fix);
if (i < 0) i = -i;
return LONG2NUM(i);
}
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407