Lukasz Lenart created WW-5828:
---------------------------------

             Summary: StringConverter does not bound integer digits when 
formatting BigDecimal
                 Key: WW-5828
                 URL: https://issues.apache.org/jira/browse/WW-5828
             Project: Struts 2
          Issue Type: Bug
          Components: Core
            Reporter: Lukasz Lenart
             Fix For: 7.5.0, 6.13.0


WW-5711 bounded {{maximumFractionDigits}} to 340 in 
{{StringConverter.convertToString()}}, so the length of a formatted 
{{BigDecimal}} no longer follows a large positive scale. The integer side has 
no equivalent bound: {{DecimalFormat}} keeps its default 
{{maximumIntegerDigits}} of {{Integer.MAX_VALUE}}, and for a {{BigDecimal}} 
with a large negative scale it pads the integer part out to the full value, so 
the length of the output follows the scale of the value rather than its 
precision — the counterpart of WW-5711 on the other side of the decimal point.

{{setMaximumIntegerDigits}} is not the right bound. {{DecimalFormat}} applies 
it by dropping the leading digits rather than by rounding, so an ordinary value 
wider than the bound would format as its trailing digits only.

Bound the number of integer digits ({{precision() - scale()}}) to the same 340 
instead. A {{BigDecimal}} within that bound formats exactly as before; past it, 
fall back to {{BigDecimal.toString()}}, which renders the value compactly in 
scientific notation. Every {{double}} still formats in full — the widest, 
{{Double.MAX_VALUE}}, has 309 integer digits, and the existing tests pin that.

Add a regression test covering the bound on both sides of it.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to