| Implicit conversions from `int` to `float` may lose precision when when calling | |
| methods with overloads that accept both`float` and `double`. | |
| For example, `Math.scalb` has overloads | |
| [`Math.scalb(float, int)`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Math.html#scalb\(float,int\)) | |
| and | |
| [`Math.scalb(double, int)`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Math.html#scalb\(double,int\)). | |
| When passing an `int` as the first argument, `Math.scalb(float, int)` will be | |
| selected. If the result of `Math.scalb(float, int)` is then used as a `double`, | |
| this may result in a loss of precision. | |
| To avoid this, an explicit cast to `double` can be used to call the | |
| `Match.scalb(double, int)` overload: | |
| ```java | |
| int x = ... | |
| int y = ... | |
| double f = Math.scalb((double) x, 2); | |
| ``` |