我想要这样的函数。。

[复制链接]
查看11 | 回复8 | 2011-1-4 10:38:21 | 显示全部楼层 |阅读模式
round()函数好像只能把数凑到10的整数次幂。
想把数凑到0.5的倍数的话,有相应的函数么?
比如
0.3->0.5
0.8->1
这样的转化效果
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
trunc(x)+case when x-trunc(x) select round(.3*2)/2,round(.8*2)/2 from dual;
ROUND(.3*2)/2 ROUND(.8*2)/2
------------- -------------
.5
1
SQL>
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
nice
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
我觉得此类函数应该还有个基点
把数字round到,比如 (a+kb)的集合, 其中K为负无穷到正无穷的整数,a,b为常数
我楼说的是a为0时候的情况,再强化的下哦 多谢
a=0.1 b=.5
的情况的话
0.3->0.1
0.8->0.6
提前谢过了,3楼
select round((.3-.1)*2)/2+.1,round((.8-.1)*2)/2+.1 from dual;
这样?
[ 本帖最后由 影之哀伤 于 2011-4-25 09:18 编辑 ]
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
原帖由 影之哀伤 于 2011-4-25 09:10 发表
我觉得此类函数应该还有个基点
把数字round到,比如 (a+kb)的集合, 其中K为负无穷到正无穷的整数,a,b为常数
我楼说的是a为0时候的情况,再强化的下哦 多谢
a=0.1 b=.5
的情况的话
0.3->0.1
0.8->0.6
提前谢过了,3楼
select round((.3-.1)*2)/2+.1,round((.8-.1)*2)/2+.1 from dual;
这样?

就是加上个偏移量嘛。
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
2楼的好。
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
2楼OO给力!
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
更习惯3楼Mychary的做法
回复

使用道具 举报

千问 | 2011-1-4 10:38:21 | 显示全部楼层
多谢各位热心回复
问题已解决,沉!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行