Plsql 如何通过某个取整因子进行取整?
我的取整系数是Plsql 如何通过某个取整因子进行取整?,plsql,oracle11g,Plsql,Oracle11g,我的取整系数是0.8 如何在Oracle存储过程计算中实现这一点?从您给出的最少示例来看,您希望使用调整后的值ceil(): If x = 1.71 Then output = 1 If x = 1.82 Then output = 2 在CTE中使用一些示例值进行演示: ceil(x - 0.8) 从您给出的最少示例中,您希望使用调整后的值ceil(): If x = 1.71 Then output = 1 If x = 1.82 Then output = 2 在CTE中使用一些示例
0.8
如何在Oracle存储过程计算中实现这一点?从您给出的最少示例来看,您希望使用调整后的值
ceil()
:
If x = 1.71 Then output = 1
If x = 1.82 Then output = 2
在CTE中使用一些示例值进行演示:
ceil(x - 0.8)
从您给出的最少示例中,您希望使用调整后的值
ceil()
:
If x = 1.71 Then output = 1
If x = 1.82 Then output = 2
在CTE中使用一些示例值进行演示:
ceil(x - 0.8)
使用
四舍五入
和.5
的偏移量。因此,对于0.8
的系数,然后0.5=0.8-0.3
从值中四舍五入减去0.3
:
Oracle 11g R2架构设置:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
查询1:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
根据您希望如何处理舍入系数边界处的值,有不同的方法使用
ROUND
、FLOOR
和CEIL
在边界值处给出不同的结果:
将舍入远离0的边界处的值,因此将向上舍入正值,向下舍入负值舍入(值-0.3)
将向下舍入边界处的值CEIL(值-0.8)
将向上舍入边界处的值FLOOR(值+0.2)
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
使用
四舍五入
和.5
的偏移量。因此,对于0.8
的系数,然后0.5=0.8-0.3
从值中四舍五入减去0.3
:
Oracle 11g R2架构设置:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
查询1:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
根据您希望如何处理舍入系数边界处的值,有不同的方法使用
ROUND
、FLOOR
和CEIL
在边界值处给出不同的结果:
将舍入远离0的边界处的值,因此将向上舍入正值,向下舍入负值舍入(值-0.3)
将向下舍入边界处的值CEIL(值-0.8)
将向上舍入边界处的值FLOOR(值+0.2)
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
:
y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
SELECT +1.71 FROM DUAL UNION ALL
SELECT +1.80 FROM DUAL UNION ALL
SELECT +1.81 FROM DUAL UNION ALL
SELECT -1.19 FROM DUAL UNION ALL
SELECT -1.20 FROM DUAL;
SELECT value,
ROUND( value - 0.3 ) AS rounded_value
FROM table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
| 1.71 | 1 |
| 1.8 | 2 |
| 1.81 | 2 |
| -1.19 | -1 |
| -1.2 | -2 |
SELECT value,
ROUND( value - 0.3 ) AS rounded_value,
CEIL( value - 0.8 ) AS ceiling_value,
FLOOR( value + 0.2 ) AS floored_value
FROM table_name
你能再举几个例子吗;1.80应该是1还是2?1.8应该是2。如果十进制值为0.8或以上,则会考虑上限值。您能否再举一些例子;1.80应该是1还是2?1.8应该是2。如果十进制值为0.8或以上,将考虑上限值。