表观划分错误

时间:2018-02-14 17:12:50

标签: sql oracle

我不明白我在下面的代码中看到的除法结果。

第一列产生40。

第二列产生53。

第三列简单地将40除以53,这应该达到0.7547169811,相反,小数是右边的一个位置。

导致此行为的原因是什么,我应该如何纠正?

(SELECT COUNT(*) 
    FROM students s
    INNER JOIN ~[temp.table.current.selection:students] stusel ON stusel.dcid=s.dcid 
    WHERE s.lunchstatus = 'F'),

(SELECT COUNT(*) FROM ~[temp.table.current.selection:students]),

(
    (SELECT COUNT(*) 
    FROM students s
    INNER JOIN ~[temp.table.current.selection:students] stusel ON stusel.dcid=s.dcid 
    WHERE s.lunchstatus = 'F') 
    /
    (SELECT COUNT(*) FROM ~[temp.table.current.selection:students])

)

---
40    53    7.54716981132075471698113207547169811321E-01

2 个答案:

答案 0 :(得分:2)

它显示7.54716981132075471698113207547169811321E-01 ,表示0.754716981132075471698113207547169811321。查看wikipedia article on E notation

答案 1 :(得分:1)

这是科学记数法 - 尝试将结果转换为例如小数:

select
    cast((40 / 53) as decimal(5, 4)) as DIVISION_RESULT
from
    dual

请注意,通过这样做,您可能会失去浮点精度。