当舍入到2位小数时,值4.01132141将四舍五入为4.02,因为它超过4.01。
如何在PL / SQL中执行此操作?
答案 0 :(得分:4)
“向上舍入”的函数是CEIL,但它会生成一个整数。
“向下舍入”的函数是FLOOR,但它也会生成一个整数。
'round nearest'的函数是ROUND,它允许你指定一个小数位数(dp)。
注意CEIL舍入为整数;要舍入到2 dp,你必须乘以100,使用CEIL,然后除以100。
要合理地直接得到答案,请使用:
ROUND(value+0.005, 2)
这是有效的,因为对于4.01132141的示例数据,传递给ROUND的值是4.01632,当舍入到2 dp时,它变为4.02。如果值开始为4.0593,那么传递给ROUND的值将是4.0643,当舍入到2 dp时,根据需要变为4.06。
那里有几个棘手的东西:
答案 1 :(得分:3)
一种方法是做ceil(value*100)/100
,但这看起来不够优雅。不确定是否有任何方法可以使round
按照您想要的方式运行。
答案 2 :(得分:1)
我遇到了同样的问题,并提出了以下声明,到目前为止一直运作良好。
select 4.01132141+(mod((ceil(4.01132141)-4.01132141)*1000,10)/1000) from dual
答案 3 :(得分:0)
从双
中选择4.01132141,CEIL(4.01132141 * 100)/ 100答案 4 :(得分:0)
您可以在PLSQL中使用它进行舍入: ROUND(UrNo +(5 / POWER(10,DecimalPlaces + 1)),DecimalPlaces)