End of Life Ruby 3.0 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
instance method
BigDecimal#n_significant_digits
n_significant_digits
ext/bigdecimal/bigdecimal.c
View on GitHub ↗
static VALUE
BigDecimal_n_significant_digits(VALUE self)
{
ENTER(1);
Real *p;
GUARD_OBJ(p, GetVpValue(self, 1));
ssize_t n = p->Prec;
while (n > 0 && p->frac[n-1] == 0) --n;
if (n <= 0) {
return INT2FIX(0);
}
int nlz, ntz;
BDIGIT x = p->frac[0];
for (nlz = BASE_FIG; x > 0; x /= 10) --nlz;
x = p->frac[n-1];
for (ntz = 0; x > 0 && x % 10 == 0; x /= 10) ++ntz;
ssize_t n_digits = BASE_FIG * n - nlz - ntz;
return SSIZET2NUM(n_digits);
}
No documentation available