我有一个使用dapper和Postgresql的.net核心应用程序。Windows,PostgreSQL 12.0,由Visual C++编译,版本1914,64位
当我在select语句中进行简单计算时,如果我不提供分数,我会得到不同的结果:
select round(25358-25358/105*100,0);
1258
select round(25358.0-25358.0/105*100,0);
1208
原因是什么?获得正确数字结果的最佳方法是什么?
Postgres和许多其他数据库(例如SQL Server(一样,进行整数除法:当两个操作数都是整数时,结果也是整数(小数部分刚刚删除(。
25358/105
的两个操作数都是整数,因此结果为241
。
另一方面,25358.0/105
有一个十进制操作数,因此结果为十进制:241.504...
。
其余的计算也会受到相应的影响。
select 25358/105 integer_divison, 25358.0/105 decimal_division
integer_divison|decimal_division--------------:|----------------:241 | 241.5047619047619048