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



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

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

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

当我使用时

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

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

我需要的结果是1655.57。

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

你不能四舍五入,乘以3得到1655.57

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

我建议先乘,然后取整。

请仔细查看第二个函数

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

Round( something, 3)表示四舍五入小数点后3位,但不表示二舍五入

最新更新