Jag tror att detta kallas flytprecision. Du kan hitta det i nästan alla programmeringsspråk och i databasen också. Detta beror på att data endast lagras med viss precision och faktiskt vad du anger som 8.31
är förmodligen inte 8.31
men till exempel 8.31631312381813
och när det multipliceras och taket kan det orsaka att ett annat värde visas.
På SQL-serverdokumentationssida du kan läsa:
I andra databassystem finns samma problem. Till exempel på mysql-webbplatsen du kan läsa: