2017-02-13 2 views
0

Как работает двойная работа? Я выполнил это со многими значениями Select Round(45.926,-1) from dual печатает 50 в то время как Select Round(45.926,-2) from dual печатает 0.Почему оператор SQL SELECT ROUND (45.926, -1) FROM DUAL print 50

+0

Что вы ожидали, когда вы округлили до 10^1 и 10^2? Кроме того, это не имеет ничего общего с «DUAL», который является просто фиктивной таблицей, позволяющей вам выдавать SELECT (которому всегда нужна таблица в Oracle). – Thilo

+0

Какая база данных? 'select round (45.926, -1)' on SQLite производит 46. – Schwern

+0

Alway рассмотрит [документацию] (https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions142.htm# SQLRF00698) –

ответ

0

Round(n,m) - округляет число п до м знаков после запятой.

При т = -1, то округляет число на десятое место делает 45.926 до 50, как это больше, чем 45

При т = -2, то округляет число до 100 места. Поскольку 45.926 меньше 50, оно становится 0. Если вы попробуете раунд (51, -2), вы должны получить 100

3

При использовании функции ROUND второй параметр представляет собой места после десятичного значения, которые должны быть приняты в результате. Таким образом, следующие результаты:

SELECT ROUND(45.926) FROM dual; 

Результат: 46, потому что нет точек после десятичного значения для рассмотрения.

SELECT ROUND(45.926, 1) FROM dual; 

Результат 45,9, рассмотрим 1-е место после десятичной

SELECT ROUND(45.926, -1) FROM dual; 

Результат: 50, принимая во внимание значение, которое должно быть 4,5926, округляя его до 5, а затем напечатать результат.

SELECT ROUND(45.926, -2) FROM dual; 

Результат: 0, принимая во внимание значение будет 0,45926, округляя его до 0, а затем печать результат в оригинальном 10x, который 0х100 = 0.

Если бы вы взяли,

SELECT ROUND(55.926, -2) FROM dual; 

Тогда результат будет равен 100, поскольку он будет равен округлению 0,55926 к 1, а затем 10x, который 1x100 = 100.

Смежные вопросы