Method: Float#<

Defined in:
numeric.c

#<(real) ⇒ Boolean

Returns true if float is less than real.

The result of NaN < NaN is undefined, so an implementation-dependent value is returned.

Returns:

  • (Boolean)


1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
# File 'numeric.c', line 1576

static VALUE
flo_lt(VALUE x, VALUE y)
{
    double a, b;

    a = RFLOAT_VALUE(x);
    if (RB_TYPE_P(y, T_FIXNUM) || RB_TYPE_P(y, T_BIGNUM)) {
        VALUE rel = rb_integer_float_cmp(y, x);
        if (FIXNUM_P(rel))
            return -FIX2LONG(rel) < 0 ? Qtrue : Qfalse;
        return Qfalse;
    }
    else if (RB_TYPE_P(y, T_FLOAT)) {
  b = RFLOAT_VALUE(y);
#if defined(_MSC_VER) && _MSC_VER < 1300
  if (isnan(b)) return Qfalse;
#endif
    }
    else {
  return rb_num_coerce_relop(x, y, '<');
    }
#if defined(_MSC_VER) && _MSC_VER < 1300
    if (isnan(a)) return Qfalse;
#endif
    return (a < b)?Qtrue:Qfalse;
}