Oracle ROUND函数返回错误的值

mef*_*ist 2 sql oracle oracle11g

我在Oracle 11g数据库上运行此sql语句

select round(79/3 + 87/3 + 86/6 + 95/6) from dual
Run Code Online (Sandbox Code Playgroud)

然后它回来了 85

select round(79/3 + 87/3 + 86/6 + 95/6,1) from dual
Run Code Online (Sandbox Code Playgroud)

回报 85.5

select round(85.5) from dual
Run Code Online (Sandbox Code Playgroud)

返回正确的值 86

有谁知道为什么第一个SQL语句没有返回正确的值,86但它将其舍入到85??

Xop*_*ter 10

如果你这样做:

select 79/3 + 87/3 + 86/6 + 95/6 from dual;
Run Code Online (Sandbox Code Playgroud)

Oracle将返回85.49999999999999999999999999999999999999,当舍入到0小数位时确实是85.这是浮点运算的工件.