在Oracle中使用Round时结果不一致

时间:2018-07-19 15:18:47

标签: sql oracle

我有一个Oracle函数。由于隐私问题,我无法包含整个功能,但相关的行是:-

<div class="row justify-content-center">
    <div class="col-4s">
    <p>Financial Year:</p>
    </div>
    <div class="col-4s">
        <select>
            <option *ngFor="let year of years">{{ year }}</option>
        </select>
    </div>
</div>

..四舍五入到小数点后两位,并返回1655.58

当我使用

WHEN in_tariff_length = 36 THEN round( ( ( (in_agreed / 100) * 80) * in_uplift) / 100,2) * 3

..四舍五入到小数点后三位,并返回1655.568

我需要的结果是1655.57。

发送到该函数和从该函数返回的所有值都是NUMBER。

2 个答案:

答案 0 :(得分:2)

您不能舍入某些东西,将其乘以3得到1655.57

551.86 * 3 = 1655.58
551.856 * 3 = 1655.568
1655.57 / 3 = 551.856666667

我建议先相乘,然后四舍五入。

答案 1 :(得分:0)

请仔细查看第二个功能

round( ( ( (in_agreed / 100) * 80) * in_uplift) / 100,3) 

Round( something, 3)表示四舍五入到 3个小数位,但不舍入到2