Template:Num
This template has as parameter an expression and produces a decimal number. If the expression produces a number of type integer, the template returns exactly that integer. If the expression produces a float, the template returns the result with a format that is accepted in an expression, and with an accuracy such the system would round it to the same float; thus if applied to a result of the template, the template returns the same.
The format (in the examples shown with Template:Numfh) is ordinary decimal format, because scientific notation with a fixed normalisation in general does not allow a representation of the exact float, see Manual:Floating-point errors in expr parser function#Reconstruction of a float.
For any float, 17 significant digits are enough to reconstruct it. Therefore we get for example:
{{numfh|(2-2^-52)*2^-20}}
→ .0000019073486328124998<Expression error: Missing operand for <. (ca. 1.9e-6)1.fffffffffffffhex*2^-20
{{numfh|(2-2^-52)*2^10}}
→ 2,047.9999999999998 (ca. 2e3)1.fffffffffffffhex*2^10
{{numfh|(2-2^-52)*2^20}}
→ 2,097,151.9999999998 (ca. 2.1e6)1.fffffffffffffhex*2^20
For numbers with a decimal point, trailing zeros are avoided:
{{numfh|1e-3/8}}
→ .000125 (ca. 1.3e-4)1.0624dd2f1a9fchex*2^-13
{{numfh|1e-10/8}}
→ .0000000000125 (ca. 1.3e-11)1.b7cdfd9d7bdbbhex*2^-37
{{numfh|1e-20/8}}
→ .0000000000000000000012500000000000000<Expression error: Missing operand for <. (ca. 1.3e-21)1.79ca10c924223hex*2^-70
{{numfh|.00000000000000000000125}}
→ .0000000000000000000012500000000000000<Expression error: Missing operand for <. (ca. 1.3e-21)1.79ca10c924223hex*2^-70
Large floats:
{{numfh|3^39}}
→ 4,052,555,153,018,976,000 (ca. 4.1e18)1.c1ec8b85c2ffchex*2^61
Numbers of type integer have up to 19 digits:
{{numfh|trunc3^trunc39}}
→ 4,052,555,153,018,976,000 (ca. 4.1e18)1.c1ec8b85c2ffchex*2^61
See also
[edit]- Template:Numf - version with thousands separators; the output is suitable in expressions used as input of Template:Num etc., but not for
#expr
. - Template:Numfh - version with thousands separators producing also the type (integer or float), and the hexidecimal representation (exact in the case of float, approximate in the case of a large number of type integer); not suitable as input for further computations