Help:Modulo and round
The MediaWiki extension ParserFunctions enables users to perform simple mathematical computations.
#expr and #ifexpr allow mod and round.
Operator | Operation | Example |
---|---|---|
mod | "Modulo", remainder of division after truncating both operands to an integer. Caveat, mod is different from all programming languages. This has been fixed (but needs to be committed), see bugzilla:6068. |
Template:Evaldemo Template:Evaldemo Template:Evaldemo Template:Evaldemo (should be 2.6) Template:Evaldemo (should be 1.6) Template:Evaldemo (should be 2.9) |
round | Rounds off the number on the left to the power of 1/10 given on the right | Template:Evaldemo Template:Evaldemo {{ #expr: 3456 round -2 }} = 3500
|
Spaces around mod and round are good for readability but not needed for working properly:
- {{
#expr:7mod3
}} gives 1 - {{
#expr:7.5round0
}} gives 8
Precedence:
(first additions, then round)
(mod and multiplication have equal precedence, evaluation from left to right)
To remind the reader of the precedence, one might write:
- When using spaces where there is precedence, the layout of the expression may be confusing:
- Template:Evaldemo
- Instead one can write:
- Template:Evaldemo
- or simply use parentheses:
- Template:Evaldemo
Mod
To get a positive mod even for a negative number, use e.g. (700000 + x) mod7 instead of x mod7. The range of the result is now 0-6, provided that x > -700000.
Alternatively, use
- 6 - ( 700006 - x ) mod7
or
- (x - 700006) mod7 + 6.
The range of the result is 0-6, provided that x < 700006.
Working for all x is:
- (x mod7 + 7) mod7
Round
- {{
#expr:2.5 round 0
}} gives 3 - {{
#expr:-2.5 round 0
}} gives -3
To round an integer plus one half for x > -100000 toward plus infinity, use:
- (x + 100000 round 0) - 100000
and to round an integer plus one half for x < 100000 toward minus infinity, use:
- (x - 100000 round 0) + 100000
To round x toward minus infinity, use:
- x + ( x != x round 0 ) * ( ( ( x - .5 ) round 0 ) - x )
and toward plus infinity
- x + ( x != x round 0 ) * ( ( ( x + .5 ) round 0 ) - x )
If x is a long expression this multiplies the length by 5! Under conditions for x there are alternatives:
To round x > -100000 toward minus infinity, use:
- (x - 100000.5 round 0) + 100000
and to round x < 100000 toward plus infinity, use:
- (x + 100000.5 round 0) - 100000
If x is a multiple of 1/n with n<1000 we can round toward minus infinity with:
- x - .499 round 0
For arbitrary n > 1 we can choose instead of -.499 any number between -.5 and -.5 + 1/n.
To find the largest multiple of 7 not larger than x (i.e. to round toward minus infinity to a multiple of 7) we can do:
- ((x-3)/7 round 0) * 7
See also
- template:mod ( talk edit history links )
- m:Category:Mathematical templates
- w:en:Category:Mathematical templates
http://www.fayeunrauphotography.com/ kjøp cialis 520853 http://www.primetermites.com/ ジェネリックバイアグラ 5575 http://www.witch-ring.com/Generic-Viagra/ Comprando viagra sfnjy http://www.flweaver.com/ online Cialis kmt http://www.blogdemoteros.com/ tadalafil 5271