Как можно округлить десятичное число до ближайшего четного числа в SQL? - PullRequest
1 голос
/ 13 сентября 2010

Мне нужно округлить десятичную дробь в SQL-запросе в Oracle 10g до ближайшего четного числа. Если число четное, его следует вернуть. Если число нечетное, должно быть возвращено следующее четное число.

Вот что я хочу: 8.05 должен вернуть 8.06, 3.48 должен вернуть 3.48

Как я могу это сделать?

Спасибо, Andrew

Ответы [ 2 ]

7 голосов
/ 13 сентября 2010

Если вы хотите округлить, например, со вторым десятичным четным числом, вы можете сделать что-то вроде этого: select round(3.43 / 0.02, 0) * 0.02;, который будет производить 3.44.

Это может быть продлено по вашему желанию: например, первая десятичная цифра, кратная 3: select round(3.5452234 / 0.3, 0) * 0.3; даст 3.6.

0 голосов
/ 13 сентября 2010

Я действительно не понимаю логику неправильного округления чисел. Кроме того, это не может быть легко, потому что вы не имеете дело с целыми числами. Однако, если вам действительно нужно, я бы предложил использовать что-то вроде этого псевдокода.

if ((num / 2) * 2 = num) {
    return // number is even
    }
else {
    num = num + .01 // this assumes you are only working with two decimal points.
}
...