Bản mẫu:Convert/nesting

::: Discussed at subpage: Template_talk:Convert/nesting.
The nesting limit for the measurement converter Template:Convert depends on the nesting-levels of each page which is using Convert. For most articles or infoboxes, there is no restriction for using Convert, anywhere on a page. However, for nested infoboxes, there has been a limit of using Convert down to a 2-nested if-expression (nested as, at most, if-else-if-then-convert). Many of the subtemplates are invoked when Convert rounds the resulting value (see below: #Nested subtemplates for rounding).
__TOC__

**Example of Convert-nesting limits**
Nested infoboxes are an example of reaching Convert nest-limits (in the MediaWiki markup language). In Infobox mountain, during March 2010 (when markup expressions were limited to 40-level nesting), the use of typical "" caused a problem inside a 3-nested if-expression, where the 3rd if-clause generated parser-errors. However, when the precision parameter "|0" was appended to the end (as ""), then the 3-nested if-expression worked ok, because specifying precision "0" bypassed 3 of the nested Convert subtemplates, using only 16 rather than the typical 19 nested-subtemplates to compute a conversion (in March 2010). Eventually, the infobox was changed to handle the value of parameter "elevation" with a 1-level if-expression (as only if-then-convert), rather than as nested under 2 else-clauses.

**Common nested subtemplates**
Most conversions using Template:Convert share the same multiple nested subtemplates to determine the precision/rounding of the output amount(s). For example:- Template:Ordomag uses ordomag/x to set order-of-magnitude rank.
If the logic of the nested subtemplates could be simplified, in terms of the levels of stacked if-expressions invoking other subtemplates, then the total nest-levels could be reduced for a typical conversion.

**Nested subtemplates for rounding**
As of March 2010, the design of Convert has treated the input numbers as potentially huge, astronomical amounts, and therefore, has had complex, multi-nested rounding routines to determine the format as scientific notation, if needed, for the result. The typical display subtemplate Convert/LoffAoffSoff has invoked Convert/round to invoke the large-scale rounding routine rnd to handle large numbers, allowing possible scientific notation. Inside , then another 4 subtemplates are usually invoked, or 8 subtemplates for numbers above a million. The total of subtemplates used to auto-round the results, when using Convert, includes:- Template:Convert/round (view source) (protected)- Template:Max/2 (view source) (protected)- Template:Ordomag (view source) (protected)- Template:Ordomag/x (view source) (protected)- Template:Precision (view source) (protected)- Template:Precision/0 (view source) (protected)- Template:Precision/00 (view source) (protected)- Template:Precision/a (view source) (protected)- Template:Rnd (view source) (protected)- Template:Rnd/- (view source) (protected)- Template:Rnd/a ( bypassed on 15 April 2010 )- Template:Rnd/b1 (view source) (protected)- Template:Rnd/c4dec0 (view source) (protected)
If, instead of using , then a different rounding routine were used, then 4-to-8 nested subtemplates could be avoided (for each conversion). However, the rounding would still need to handle very large numbers, such as for calculations in astrophysics and celestial mechanics.
::: Also see: Template_talk:Convert - for general discussion.
::: Also see: Template_talk:Convert/density - about density conversions.
::: Also see: Template_talk:Convert/updates - for requesting protected updates.
Thể loại:Bản mẫu con của Bản mẫu Convert
en:Template:Convert/nesting