Creo que esto se llama precisión flotante. Puede encontrarlo en casi todos los lenguajes de programación y también en la base de datos. Esto se debe a que los datos se almacenan solo con cierta precisión y, de hecho, lo que establece como 8.31
probablemente no sea 8.31
pero por ejemplo 8.31631312381813
y al multiplicarlo y limitarlo puede hacer que aparezca un valor diferente.
En página de documentación del servidor SQL puedes leer:
En otros sistemas de bases de datos existe el mismo problema. Por ejemplo, en sitio web mysql puedes leer: