creating float16 tensors from scalars is not giving the correct results
Hi @MahmoudAshraf97 

This issue is related to the limited precision of the float16 data type. Float16 has a smaller range and precision compared to float32 and float64, which can result in rounding errors when representing larger numbers. 

The closest representable float16 value to 6552 is 6550. Therefore, if you create a float16 tensor from the scalar value 6552, it will be rounded to 6550. Here's how you can verify this using Python:
```
import numpy as np

x = np.float16(6552)
print(x)
```
Output:
```
6550.0
``` Are you satisfied with the resolution of your issue?
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=Yes&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/60456">Yes</a>
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=No&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/60456">No</a>

<details><summary>Click to expand!</summary> 
 
 ### Issue Type

Bug

### Have you reproduced the bug with TF nightly?

Yes

### Source

binary

### Tensorflow Version

2.12, 2.13.0-dev20230501

### Custom Code

No

### OS Platform and Distribution

_No response_

### Mobile device

_No response_

### Python version

3.8.10, 3.10.11

### Bazel version

_No response_

### GCC/Compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current Behaviour?

When creating a tensor from a scalar and setting the dtype to `float16`, the tensor is created with the wrong contents
the bug starts appearing with numbers higher than 2048 up to the upper limit of `float16`.

### Standalone code to reproduce the issue

```shell
print(tf.__version__)
>>> 2.13.0-dev20230501
print(tf.convert_to_tensor(6552.,dtype="float16"))
>>> tf.Tensor(6550.0, shape=(), dtype=float16)
```


### Relevant log output

_No response_</details>