Penso che questo si chiami precisione float. Puoi trovarlo in quasi tutti i linguaggi di programmazione e anche in Database. Questo perché i dati vengono archiviati solo con una certa precisione e in effetti ciò che hai impostato come 8.31
probabilmente non è 8.31
ma ad esempio 8.31631312381813
e quando lo moltiplichi e ceil potrebbe far apparire quel valore diverso.
Nella pagina della documentazione del server SQL puoi leggere:
In altri sistemi di database esiste lo stesso problema. Ad esempio su sito web mysql puoi leggere: