Class: Plurimath::Formatter::Numbers::PrecisionResolver
- Inherits:
-
Object
- Object
- Plurimath::Formatter::Numbers::PrecisionResolver
- Defined in:
- lib/plurimath/formatter/numbers/precision_resolver.rb
Overview
Chooses which precision source wins for one render call.
Instance Method Summary collapse
Instance Method Details
#resolve(source, precision:, base:, significant:, notation_supported:, digit_count: 0) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/plurimath/formatter/numbers/precision_resolver.rb', line 8 def resolve(source, precision:, base:, significant:, notation_supported:, digit_count: 0) return precision if precision significant_precision = significant_base_precision(source, base, significant) return significant_precision if significant_precision # Source owns input-derived digit lengths; this resolver only decides # which precision rule wins. Plain decimal rendering preserves # fractional scale, while notation precision controls coefficient # digits after the leading digit. if notation_supported # A requested digit budget (significant or digit_count) widens the # coefficient fraction beyond the source's own significant digits # (one digit leads, so the fraction allowance is budget - 1). budget = [significant, digit_count].max if budget.positive? return [budget - 1, source.notation_precision].max end return source.notation_precision end source.decimal_precision end |