# tf.cast

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.13.1/tensorflow/python/ops/math_ops.py#L938-L1019) |

Casts a tensor to a new type.

#### View aliases


**Main aliases**

[`tf.dtypes.cast`](https://www.tensorflow.org/api_docs/python/tf/cast)
**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.cast`](https://www.tensorflow.org/api_docs/python/tf/cast), [`tf.compat.v1.dtypes.cast`](https://www.tensorflow.org/api_docs/python/tf/cast)

<br />

    tf.cast(
        x, dtype, name=None
    )

The operation casts `x` (in case of `Tensor`) or `x.values`
(in case of `SparseTensor` or `IndexedSlices`) to `dtype`.

#### For example:

    x = tf.constant([1.8, 2.2], dtype=tf.float32)
    tf.cast(x, tf.int32)
    <tf.Tensor: shape=(2,), dtype=int32, numpy=array([1, 2], dtype=int32)>

Notice [`tf.cast`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/cast) has an alias [`tf.dtypes.cast`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/cast):

    x = tf.constant([1.8, 2.2], dtype=tf.float32)
    tf.dtypes.cast(x, tf.int32)
    <tf.Tensor: shape=(2,), dtype=int32, numpy=array([1, 2], dtype=int32)>

The operation supports data types (for `x` and `dtype`) of
`uint8`, `uint16`, `uint32`, `uint64`, `int8`, `int16`, `int32`, `int64`,
`float16`, `float32`, `float64`, `complex64`, `complex128`, `bfloat16`.
In case of casting from complex types (`complex64`, `complex128`) to real
types, only the real part of `x` is returned. In case of casting from real
types to complex types (`complex64`, `complex128`), the imaginary part of the
returned value is set to `0`. The handling of complex types here matches the
behavior of numpy.

Note casting nan and inf values to integral types has undefined behavior.

Note this operation can lead to a loss of precision when converting native
Python `float` and `complex` variables to [`tf.float64`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf#float64) or [`tf.complex128`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf#complex128)
tensors, since the input is first converted to the `float32` data type and
then widened. It is recommended to use [`tf.convert_to_tensor`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/convert_to_tensor) instead of
[`tf.cast`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/cast) for any non-tensor inputs.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `x` | A `Tensor` or `SparseTensor` or `IndexedSlices` of numeric type. It could be `uint8`, `uint16`, `uint32`, `uint64`, `int8`, `int16`, `int32`, `int64`, `float16`, `float32`, `float64`, `complex64`, `complex128`, `bfloat16`. |
| `dtype` | The destination type. The list of supported dtypes is the same as `x`. |
| `name` | A name for the operation (optional). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `Tensor` or `SparseTensor` or `IndexedSlices` with same shape as `x` and same type as `dtype`. ||

<br />

<br />

<br />

<br />

| ## Raises ||
|---|---|
| `TypeError` | If `x` cannot be cast to the `dtype`. |

<br />