前段时间在遇到一个四舍五入的问题,已经解决写个博客记录一下,先看代码:
create function `test`(v_num float) returns int
begin
if v_num = 0
then return 0;
elseif ceil(v_num)=1
then return 1;
elseif ceil(v_num)>1
then return round(v_num);
else return -1;
end if;
end
这一段代码中要是传入一个浮点型,返回一个int类型看,如果这个浮点型=0,则返回一个0,如果这个浮点型向上取整等于1,则返回1,如果这个浮点型向上取整大于1,则对他进行四舍五入的操作,其他情况返回-1。
注意一下这个时候这个函数实际上是由问题的,如下图:
我传入的是22622.5,正常来说应该返回22623,但是却返回了22622,但是当我传入22622.6时,如下图:
这个时候他又正常了,导致这个问题的根本原因是不可以传入float和int,传入的参数如果是数字类型那么只能是decimal类型,当我把传入的参数改为decimal时,如下图:
这个问题就解决了