Template:Formatnum: Difference between revisions
make the template fail gracefully if the provided parameter is not a number |
m Protected "Template:Formatnum": Widely used template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite)) |
||
(8 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{#invoke:Formatnum|main}}<noinclude> |
|||
{{#iferror: {{#expr: {{{1|}}} }} | {{{1|}}} | {{#ifexpr: abs( {{{1|0}}} ) >= 100000000000000000 | {{formatnum: {{{1|}}} }} | {{#ifexpr: {{{1|0}}} < 0 | - }}{{#ifexpr: abs( {{{1|0}}} ) > 100000000000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 1000000000000000000 ) * 1000000000000000000 ) / 100000000000000000 ) }}|{{{2|}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 10000000000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 100000000000000000 ) * 100000000000000000 ) / 10000000000000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |4|322={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 1000000000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 10000000000000000 ) * 10000000000000000 ) / 1000000000000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |3={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 100000000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 1000000000000000 ) * 1000000000000000 ) / 100000000000000 ) }}|{{{2|}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 10000000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 100000000000000 ) * 100000000000000 ) / 10000000000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |322={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 1000000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 10000000000000 ) * 10000000000000 ) / 1000000000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |3|4={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 100000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 1000000000000 ) * 1000000000000 ) / 100000000000 ) }}|{{{2|}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 10000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 100000000000 ) * 100000000000 ) / 10000000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |322={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 1000000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 10000000000 ) * 10000000000 ) / 1000000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |3={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 100000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 1000000000 ) * 1000000000 ) / 100000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |4={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 10000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 100000000 ) * 100000000 ) / 10000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |322={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 1000000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 10000000 ) * 10000000 ) / 1000000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |3={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 100000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 1000000 ) * 1000000 ) / 100000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |322={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 10000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 100000 ) * 100000 ) / 10000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |4={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 1000 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 10000 ) * 10000 ) / 1000 ) }}|{{{2|}}}}}{{#if: {{{sep|}}} | |{{#switch: {{formatnumSigns|sp|{{{2|}}}}} |3|322={{formatnumSigns|,|{{{2|}}}}}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 100 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 1000 ) * 1000 ) / 100 ) }}|{{{2|}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 10 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 100 ) * 100 ) / 10 ) }}|{{{2|}}}}} |
|||
}}{{#ifexpr: abs( {{{1|0}}} ) >= 0 | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} ) / 10 ) * 10 ) / 1 ) }}|{{{2|}}}}} |
|||
}}{{#ifexpr: (abs( {{{1|0}}} ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) ) > 0) or (0{{{prec|0}}} >= 1) |{{formatnumSigns|.|{{{2|}}}}}{{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 1 ) / 1 ) * 10 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 10 ) / 10 ) > 0) or (0{{{prec|0}}} >= 2) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 10 ) / 10 ) * 100 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 100 ) / 100 ) > 0) or (0{{{prec|0}}} >= 3) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 100 ) / 100 ) * 1000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 1000 ) / 1000 ) > 0) or (0{{{prec|0}}} >= 4) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 1000 ) / 1000 ) * 10000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 10000 ) / 10000 ) > 0) or (0{{{prec|0}}} >= 5) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 10000 ) / 10000 ) * 100000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 100000 ) / 100000 ) > 0) or (0{{{prec|0}}} >= 6) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 100000 ) / 100000 ) * 1000000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 1000000 ) / 1000000 ) > 0) or (0{{{prec|0}}} >= 7) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 1000000 ) / 1000000 ) * 10000000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 10000000 ) / 10000000 ) > 0) or (0{{{prec|0}}} >= 8) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 10000000 ) / 10000000 ) * 100000000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 100000000 ) / 100000000 ) > 0) or (0{{{prec|0}}} >= 9) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 100000000 ) / 100000000 ) * 1000000000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 1000000000 ) / 1000000000 ) > 0) or (0{{{prec|0}}} >= 10) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 1000000000 ) / 1000000000 ) * 10000000000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 10000000000 ) / 10000000000 ) > 0) or (0{{{prec|0}}} >= 11) | {{formatnumDigit|{{#expr: trunc( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 10000000000 ) / 10000000000 ) * 100000000000 ) }}|{{{2|}}}}}{{#ifexpr: (abs( {{{1|0}}} ) - ( trunc( abs ( {{{1|0}}} + 0.0000000000001 ) * 100000000000 ) / 100000000000 ) > 0) or (0{{{prec|0}}} >= 12) | {{formatnumDigit|{{#expr: ( ( abs( {{{1|0}}} + 0.0000000000001 ) - trunc( abs( {{{1|0}}} + 0.0000000000001 ) * 100000000000 ) / 100000000000 ) * 1000000000000 ) round 0 }}|{{{2|}}}}} |
|||
}} }} }} }} }} }} }} }} }} }} }} }} |
|||
}} }}<noinclude> |
|||
{{Documentation}} |
{{Documentation}} |
||
Latest revision as of 04:18, 21 June 2020
Uses Lua: |
This template formats a number in the local format (local numerals, local thousands separator, decimal separator and the pattern of separators [some languages for example have a ten-thousands separator]) of the user's preferred language.
Parameter | Description | Type | Status | |
---|---|---|---|---|
number | 1 number | Number that will be formatted. It must be unformatted.
| Line | required |
language | 2 lang | Language code, only to be given if the language shall be fixed; by default the user interface language.
| Line | optional |
no separators | sep | Any non-empty value will remove thousands seperators. | Line | optional |
precision | prec | The number of decimal digits to show. If given as a positive number, exactly that many decimal digits will be shown, and the number will be truncated (not rounded!) or zero-padded if needed. If not given or it's nonpositive, all decimal digits will be shown, except for trailing zeros.
| Number | optional |
Examples
{{Formatnum|1234}}
--> 1,234
The above documentation is transcluded from Template:Formatnum/doc (edit | history). Editors can experiment in this template's sandbox (create | mirror) and testcases (create) page. Please add categories to the /doc subpage. Subpages of this template. |