Firebird усекает десятичные разряды при делении, а не округлении. Кроме того, он основывает число десятичных точек в возвращаемом значении на число десятичных знаков в числителе и знаменателе.
Почему Firebird усекает вместо округления? И почему он основывает возвращаемое значение на количестве десятичных знаков в запросе?
Firebird 2.5:
select 187/60.00 from rdb$database; --result: 3.11
select 187.000/60 from rdb$database; --result: 3.116
select 187.000/60.00 from rdb$database --result: 3.11666
SQL Server 2012:
select 187/60.00; --result: 3.116666
Oracle 11gR2:
select 187/60.00 from dual; --result: 3.116666666667
MySQL 5.5.32:
select 187/60.00 from dual; --result: 3.1167
PostgreSQL 9.3.1:
select 187/60.00; --result: 3.116666666667
SQLite:
select 187/60.00; --result: 3.1166666666666667