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

问题描述 投票:0回答:2

我有一个Oracle功能。由于隐私问题,我不能包括整个功能,但相关的是: -

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

..which四舍五入到小数点后2位,返回1655.58

我用的时候

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

..which四舍五入到小数点后3位,返回1655.568

我需要的结果是1655.57。

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

sql oracle
2个回答
2
投票

你不能舍入一些东西,乘以3得到1655.57

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

我建议先乘,然后再绕。


0
投票

请仔细看看第二个功能

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

Round( something, 3)表示舍入到小数点后3位但不是2位

© www.soinside.com 2019 - 2024. All rights reserved.