haoqi
1
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 fix.
-
-
-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);
}
haoqi
2
Haoqi H. 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.
(-230).class # => Fixnum
(230).class # => Bignum
(-2**30).abs.class # => Bignum