Sybase ASE和Oracle 11g的Round函数的差异



以下查询在Sybase ASE上运行

SELECT ROUND(FixedRate,2) AS FixedRate FROM TableName WHERE ID=10000905;

结果是

固定速率

0.28

以下查询在Oracle 11g上运行

SELECT Round(FIXED_RATE,2) AS FixedRate FROM TableName WHERE ID=10000905;

结果是

固定

0.29

两个db的未舍入值均为0.285。在sybase中FixedRate的数据类型为float,在Oracle中为float(126)。

为什么会有差异(Sybase中为0.28,Oracle中为0.29)?如何使这两个数据库中的差异相同?

我记得,SYBASE对FLOATS不使用Base-10编码,因此.285被存储为.284999999999999999。这就是为什么它是四舍五入而不是甲骨文的四舍五进。Oracle的TRUNC(FIXED_RATE,2)和SYBASE的TRUNCATE(FIXED_RATE,2。

最新更新