github / github/codeql

Document CodeQL `float` `floor()` and `ceil()` behavior for values outside of `int` range

Abierto
#13,063 0 comentarios 0 reacciones 0 asignados Ver en GitHub
question
Lenguaje dominante
CodeQL
Estrellas
10.1k
Forks
2.1k
Merge medio
2 d 15 h
PR fusionados (30 d)
141

Descripción

The documentation for the CodeQL predicates `float.floor()` and `float.ceil()` says:
> Returns the largest integer that is not greater than the receiver

> Returns the smallest integer greater than or equal to the receiver

For both the documentation is incorrect for results outside the `int` value range. The actual behavior of these predicates is that they use the minimum / maximum `int` value if the value exceeds the `int` value range, as seen with this query:
```codeql
from float f
where f = [2200000000.0, -2200000000.0]
select f, f.floor() as floor, f.ceil() as ceil
```

The results are:
| f | floor | ceil |
| -- | -- | -- |
| -2200000000 | -2147483648 | -2147483648
| 2200000000 | 2147483647 | 2147483647

(Tested with CodeQL CLI 2.13.1)

It would be good if the documentation for `floor()` and `ceil()` is adjusted to explicitly mention this.

This might also have to be adjusted in the [QL language specification](https://codeql.github.com/docs/ql-language-reference/ql-language-specification/#built-ins-for-float).

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.