2014-10-09 4 views
0

Я использую SQL Server 2008 R2, и я хочу найти округление вверх и вниз значений с определенными десятичными точками, как показано ниже:Округление вверх и вниз чисел с определенными десятичными точками

Для примера:

  1. Если мое Значение 1,27845 и я хочу ответ 2 знаков после запятой, то мой ответ должен быть

    1. Округление: 1,28
    2. Округление вниз: 1,27
  2. Если мое Значение 33,33333 и я хочу ответ 2 знаков после запятой, то мой ответ должен быть

    1. Округление UP: 33.34
    2. Округление Вниз: 33,33
  3. Если моя Значение 1,27845 и я хочу ответ с 3-мя знаками после запятой, то мой ответ должен быть

    1. Округление: 1,279
    2. Округление вниз : 1.278
  4. Если мой Значение 33,33333 и я хочу ответ с 3-мя знаками после запятой, то мой ответ должен быть

    1. Округление: 33,334
    2. Округление вниз: 33,333

Я хочу общее решение для всех случаев. Благодаря ...

+0

Теперь, когда мы знаем, что вы хотите, пожалуйста, поделитесь с нами, что у вас есть уже пробовал. –

+1

Возможный дубликат [округление десятичных чисел в SQL Server 2008] (http://stackoverflow.com/questions/21072136/rounding-down-decimal-numbers-in-sql-server-2008) –

+0

@ PM77-1 У меня было попробовал 'ROUND()', преобразовать в десятичную, потолочную и напольную функцию, чтобы это сделать, но я не нашел полного решения моей проблемы. –

ответ

1

Вы могли бы могли бы использовать следующий «смещение» вместе с полом и потолком

DECLARE 
    @digit int = 2, 
    @value decimal(10,5)=1.27845 
DECLARE 
    @calc_scale int = POWER(10,@digit) 

SELECT 
    CAST(FLOOR (@value * @calc_scale)/@calc_scale AS DECIMAL(10,5)) as down, 
    CAST(CEILING (@value * @calc_scale)/@calc_scale AS DECIMAL(10,5)) as up 

Однако тип целевых данных всегда будет, как указан в запросе (например, точности изменить: масштаб 5 в приведенном выше примере). Вы не можете динамически изменять количество цифр в выходе, так как этот масштаб зависит от типа данных переменной. Вы можете столкнуться с преобразованием в тип данных VARCHAR и обрезать ненужные цифры, но я категорически против этого.

Если вам нужно отобразить только значительное количество цифр, я рекомендую обрезать его на уровне приложения.

0

enter image description here

Я Couldn'd добавить свой код, продолжает получать эту ошибку «Ошибка отправки ответа» так добавляемый как изображение