Tiz*_*ica 0 sql oracle plsql numbers decimal
我有数字数据:
123.42
12.54
1.02
2.99
Run Code Online (Sandbox Code Playgroud)
对于每一个,我想获得最接近 0.5 步的数字。所以
func(123.42)=123.0
func(12.54)=12.5
func(1.02)=1.0
func(2.99)=2.5
Run Code Online (Sandbox Code Playgroud)
有什么线索吗?我正在尝试,trunc((x-floor(x))*5)/5)但什么也得不到。
val := round(val*2) / 2;
Run Code Online (Sandbox Code Playgroud)
这种表达应该是你所描述的问题。所以功能是:
create or replace function func(val number) return number
is
begin
return round(val*2) / 2;
end;
Run Code Online (Sandbox Code Playgroud)
但是查看示例,您不想要最接近的数字,而是希望小于您的值的最高数字四舍五入到 0.5。您将通过以下方式获得:
create or replace function func(val number) return number
is
begin
return floor(val*2) / 2;
end;
Run Code Online (Sandbox Code Playgroud)
如果您希望将大于值的最小数字舍入为 0.5,则为:
create or replace function func(val number) return number
is
begin
return ceil(val*2) / 2;
end;
Run Code Online (Sandbox Code Playgroud)