# Converting a value to a different type

To convert a value of type `i64`

to `f32`

, use the function `f32.i64`

:

```
let x : i64 = 2
let y : f32 = f32.i64 x
```

Generally, to convert a value of builtin type `F`

to builtin type
`T`

, use the function `T.F`

:

`let z : bool = bool.i64 x`

This is not special syntax, but simply calling the function `i64`

in module `bool`

. It just so happens that the prelude has modules
defined with the same name as each of the builtin scalar functions,
and that these modules contain similarly named conversion
functions.

Conversion to a type with smaller size will truncate if needed. Floats converted to integers are rounded toward zero.

Converting an integer type to a larger signed integer type will perform sign extension.

Converting an integer type to a larger unsigned integer type will perform zero extension.

# See also

The prelude file defining these
modules,
specifically the `from_prim`

module type.