Difference between revisions of "Template:Hands/numdisp"

From blackwiki
Jump to navigation Jump to search
imported>Plastikspork
(Per edit request, revert if controversial or if it breaks something)
imported>Plastikspork
(Trailing zeros fix per edit request, and moving cat to doc ...)
Line 5: Line 5:
 
--                                (see NOTES at bottom)
 
--                                (see NOTES at bottom)
 
--
 
--
--></noinclude>{{#if:{{#titleparts:{{{1|-1200-3/118}}}|1|2}}
+
--></noinclude>{{#if:{{#titleparts:{{{1|-1200-3~118}}}|1|2}}
 
|{{Convert/numdisp/fracparts
 
|{{Convert/numdisp/fracparts
 
   |{{{1|-1200-3/118}}}|{{#titleparts:{{{1|-1200-3/118}}}|1|1}}|{{#titleparts:{{{1|-1200-3/118}}}|1|2}}}}<!--split at "/"
 
   |{{{1|-1200-3/118}}}|{{#titleparts:{{{1|-1200-3/118}}}|1|1}}|{{#titleparts:{{{1|-1200-3/118}}}|1|2}}}}<!--split at "/"
--else-->|{{#ifexpr:{{{1|-9}}} < 0|−<!--&minus-->}}{{
+
--else-->|{{#ifexpr:{{{1|-14000.00}}} < 0
formatnum:{{#expr: abs( {{{1|-6000}}} )}}|
+
  |<!--then re-build negative number (see NOTE Z4 below)
}}}}<noinclude><!--
+
-->{{formatnum:
 +
  {{padright:−<!--&minus-->{{#expr:-{{{1|-14000.00}}} }}<!--endexpr
 +
    --put decimal if needed-->{{
 +
    #ifexpr:{{{1|-14000.00}}}0={{{1|-14000.00}}}
 +
    and {{{1|-14000.00}}}=floor( {{{1|-14000.00}}} )|.}}<!--
 +
  -->|{{strlen_short|{{{1|-14000.00}}}|}}<!--endstrlen_short
 +
    -->|0}}<!--endpadright end-zeroes "0" to original length
 +
  -->}}<!--endformatnum
 +
  else-->|{{formatnum: {{{1|6000.500}}} }}}}<!--endif {1}<0
 +
-->}}<noinclude><!--endif {#titleparts..}
 
--------------------------------------------------------------
 
--------------------------------------------------------------
 
--NOTES:
 
--NOTES:
Line 36: Line 45:
 
--    by 1 level to apply abs({1}) in a nested {#expr:} parser
 
--    by 1 level to apply abs({1}) in a nested {#expr:} parser
 
--    function, to use the absolute value of the amount {1}.
 
--    function, to use the absolute value of the amount {1}.
 +
--
 +
--NOTE Z4: Any end-zeroes on a decimal are preserved by not
 +
--    using positive amounts in an expression, and for rare
 +
--    negative amounts, the &minus with inverse -{1} is padded
 +
--    by {padright:} with end-zeroes "0" to {strlen_short} but
 +
--    uses #ifexpr:{1}0={1} and floor({1})={1} to put ".".
 +
--    So, {strlen_short} keeps minimal expansion depth of +2.
 
--
 
--
 
-- WARNING: *** DO NOT DELETE COMMENTS FROM THIS TEMPLATE ***
 
-- WARNING: *** DO NOT DELETE COMMENTS FROM THIS TEMPLATE ***
Line 56: Line 72:
 
--20Nov10 Linked {Documentation} to hold any interwiki links.
 
--20Nov10 Linked {Documentation} to hold any interwiki links.
 
--12Feb11 Shows Unicode &minus ("−") for negative numbers.
 
--12Feb11 Shows Unicode &minus ("−") for negative numbers.
 +
--17Feb11 Used {padright:} to re-add end-zeroes on negatives.
 +
--17Feb11 Used #ifexpr:{1}0={1} and floor({1})={1}, to put "."
 
--
 
--
 
  ** Add interwiki links to /doc subpage to avoid changes here **
 
  ** Add interwiki links to /doc subpage to avoid changes here **
 
--
 
--
 
-->{{Documentation}}
 
-->{{Documentation}}
 
[[Category:Subtemplates of Template Convert]]
 
 
</noinclude>
 
</noinclude>

Revision as of 19:57, 17 February 2011

−14,000.

Template documentation[view] [edit] [history] [purge]

The Template:Hands/numdisp processes a number, for display, by checking to display a fraction part (at "/"), else it just uses parser-function {{formatnum:{{{1|6000}}}}} to add commas, such as to show "6,000".

Usage:  {{hands/numdisp|6+3/8}} → Template:Convert/numdisp/fracparts
{{hands/numdisp|-4-1/2}} → Template:Convert/numdisp/fracparts
{{hands/numdisp|23500}} → 23,500
{{hands/numdisp|2300+643/1250}} → Template:Convert/numdisp/fracparts
{{hands/numdisp|&minus;7.0}} → −7.
{{hands/numdisp|14+6/ }} → Expression error: Unexpected < operator

Implementation

The check, for fraction parts, uses parser-function {{#titleparts:xx/xx|1|2}} to split a number at "/" (if any, as in: 6+3/8) and then checks if part 2 (the denominator, after the slash) contains a number, to trigger use of {{hands/numdisp/frac}}). Hence, the template uses:

#if: {{#titleparts:{{{1|6+3/8}}}|1|2}}

That if-expression will be true if a denominator exists (such as "8" in 6+3/8).

See also