Template:Trunc
This template produces an expression for the truncated value of a given expression. If the value is in the range of integer-type numbers (in the range -9,223,372,036,854,775,808 through 9,223,372,036,854,775,807), the resulting expression is of type integer.
The template also serves as a tool to enter an integer larger than 9,007,199,254,740,992, avoiding rounding to float: split the digits up into two parameters, each forming an integer not larger than that limit, and avoiding leading zeros in the second parameter. If the latter requires a larger first parameter: for every trailing 0 it can be a factor 2 larger then mentioned (see also Help:Calculation accuracy#Integers). To enter an integer smaller than -9,007,199,254,740,992 explicitly, do the same with a minus sign before each part.
Thus, when applying #expr
, if the value is in the range of integer-type numbers the exact result is produced. The reason for not applying #expr
in this template is:
- for integer-type numbers: in subsequent use in another expression the value would be rounded to float
- for floats: they would be rounded to 14 digits
Examples
Integer-type expressions (unchanged):
{{numf|{{trunc|trunc(2^63-1024)+trunc1023}}}}
→ 9,223,372,036,854,775,807
Explicit integer values in the range of type integer:
{{trunc|123|4567890123456789}}
→ trunc((trunc(123))e trunc(15+1)+trunc4567890123456789){{trunc|1234|567890123456789}}
→ trunc((trunc(1234))e trunc(14+1)+trunc567890123456789){{trunc|123456|7890123456789}}
→ trunc((trunc(123456))e trunc(12+1)+trunc7890123456789){{trunc|1234567|890123456789}}
→ trunc((trunc(1234567))e trunc(11+1)+trunc890123456789){{trunc|12345678|90123456789}}
→ trunc((trunc(12345678))e trunc(10+1)+trunc90123456789){{trunc|1234567890|123456789}}
→ trunc((trunc(1234567890))e trunc(8+1)+trunc123456789){{trunc|12345678901|23456789}}
→ trunc((trunc(12345678901))e trunc(7+1)+trunc23456789){{trunc|123456789012|3456789}}
→ trunc((trunc(123456789012))e trunc(6+1)+trunc3456789){{trunc|1234567890123|456789}}
→ trunc((trunc(1234567890123))e trunc(5+1)+trunc456789){{trunc|12345678901234|56789}}
→ trunc((trunc(12345678901234))e trunc(4+1)+trunc56789){{trunc|123456789012345|6789}}
→ trunc((trunc(123456789012345))e trunc(3+1)+trunc6789){{trunc|1234567890123456|789}}
→ trunc((trunc(1234567890123456))e trunc(2+1)+trunc789)
{{numf|{{trunc|123|4567890123456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|1234|567890123456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|123456|7890123456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|1234567|890123456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|12345678|90123456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|1234567890|123456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|12345678901|23456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|123456789012|3456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|1234567890123|456789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|12345678901234|56789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|123456789012345|6789}}}}
→ 1,234,567,890,123,456,789{{numf|{{trunc|1234567890123456|789}}}}
→ 1,234,567,890,123,456,789
{{numf|{{trunc|9e17|1}}}}
→ 9,000,000,000,000,000,001 (to avoid leading zeros in the second parameter, the first parameter is almost 100 times as large as 9,007,199,254,740,992. However, for every trailing 0 it can be a factor 2 larger then this number; in this case there are 17 trailing zeros; since the factor 100 is less than 2^17 the first parameter is exactly representable as float).
{{numf|{{trunc|-123|-4567890123456789}}}}
→ -1,234,567,890,123,456,789
Float expressions with integer values in the range of type integer (the template converts them to type integer):
Float expressions with a non-integer value (the template applies the mathematical trunc function and returns a result of type integer)::
{{numf|{{trunc|98.7}}}}
→ 98{{numf|{{trunc|20/3}}}}
→ 6{{numf|{{trunc|1e6/3}}}}
→ 333,333
Floats outside the range of type integer (unchanged):
{{numfh|{{trunc|123.45e20}}}}
→ 12,345,000,000,000,000,000,000 (ca. 1.2e22)1.4e9ca52eb182ahex*2^73
- Compare the operator trunc:
{{numf|trunc123.45e20}}
→ 4,128,214,688,309,706,752
A leading zero in the second parameter is ignored:
{{numf|{{trunc|123456789|0123456789}}}}
→ 123,456,789,123,456,789
If one of the integers is too large, it is rounded in the conversion to float, making the result inaccurate:
{{numf|{{trunc|1|234567890123456789}}}}
→ 1,234,567,890,123,456,800{{numf|{{trunc|12|34567890123456789}}}}
→ 1,234,567,890,123,456,788{{numf|{{trunc|12345678901234567|89}}}}
→ 1,234,567,890,123,456,889{{numf|{{trunc|123456789012345678|9}}}}
→ 1,234,567,890,123,456,809