Method: BigDecimal.save_limit

Defined in:
bigdecimal.c

.save_limit { ... } ⇒ Object

Execute the provided block, but preserve the precision limit

BigDecimal.limit(100)
puts BigDecimal.limit
BigDecimal.save_limit do
    BigDecimal.limit(200)
    puts BigDecimal.limit
end
puts BigDecimal.limit

Yields:



3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
# File 'bigdecimal.c', line 3895

static VALUE
BigDecimal_save_limit(VALUE self)
{
    size_t const limit = VpGetPrecLimit();
    int state;
    VALUE ret = rb_protect(rb_yield, Qnil, &state);
    VpSetPrecLimit(limit);
    if (state) rb_jump_tag(state);
    return ret;
}