首页 > 解决方案 > DBMS_RANDOM.VALUE 返回值等于 HIGH 值

问题描述

为什么这会返回 1 到 5 之间的值?

declare
    v numeric;
begin
    v := dbms_random.value(1, 5);
    DBMS_OUTPUT.PUT_LINE(v);
end;

根据文档,它应该返回 1 到 4 之间的值。

注意:我使用的是 Oracle 12c 第 2 版

标签: oracleoracle12c

解决方案


它为您四舍五入。

declare
    v numeric(6,5);
    w numeric;
begin
    v := dbms_random.value(1, 5);
    w := v;
    DBMS_OUTPUT.PUT_LINE(v);
    DBMS_OUTPUT.PUT_LINE(w);
    DBMS_OUTPUT.PUT_LINE(FLOOR(v));
end;
/

结果之一:

dbms_output:
4.92843
5
4

推荐阅读