## entier

expr function available since Tcl 8.5: tcl::matchfunc::entier

Converts a number to some integral type (int, wide or bignum). This function was introduced in TIP#237 .

The name of this function is derived from French, via ALGOL [L1 ]. It also shows up in Tcl as a subcommand of string is

This is different from tcl::mathfunc::int in that it won't overflow:

```% expr int(256**\$::tcl_platform(wordSize))
0
% expr entier(256**\$::tcl_platform(wordSize))
18446744073709551616```

### Rounding behaviour

Note that entier will truncate the decimal part of a number, effectively 'rounding towards 0':

```% expr entier(-1.6)
-1
% expr entier(1.6)
1```

Lars H: As a rounding function, this is unfortunately not particularly good. There a four common ways to round doubles to integers, three of which are useful:

To nearest integer
This is round.
To smallest integer >= given number
This has to be coded as round(ceil(\$x)).
To greatest integer <= given number
This has to be coded as round(floor(\$x)).

and one which is not:

Round towards zero
A.k.a. truncating decimals. This is entier. Specified by the hideous inequality 1 > abs(\$x) - abs(entier(\$x)) >= 0.

At least one specification of Algol (now linked above) was careful to not allow such behaviour for that entier.

2014-12-29: then again, entier isn't a rounding function. Like int or wide, it's a coercion function. If this coercion were combined with rounding, the implementation would in effect be making choices the programmer would like to have some control over.

 Category Command Category Function Category Glossary