Имя: Пароль:
1C
 
Как округлить в запросе в меньшую сторону
0 Jasnaja
 
29.12.09
15:00
Как в тексте запроса округлить в меньшую сторону
1 gr13
 
29.12.09
15:01
в общем модуле процедуру, в которой описать это округление и вызывать из запроса
2 Jasnaja
 
29.12.09
15:02
например?
3 Serg_1960
 
29.12.09
15:03
(0) Баааааааян... "Учу пользоваться поиском. Дорого" (не помню чьё)
4 IronDemon
 
29.12.09
15:03
(1) Ты ничего не перепутал?
5 Kreont
 
29.12.09
15:03
отнять 0.5 (0,05; 0,005) и округлить как обычно :)
6 mikecool
 
29.12.09
15:04
выразить(ЧтоОкругляем - 0.5 как число(15,0))
7 Serg_1960
 
29.12.09
15:07
(4) для СКД подсказал(?)
8 DUDE
 
29.12.09
15:07
а фотку спросить? :)
9 Serg_1960
 
29.12.09
15:10
(6) Автор забыл уточнить до какого знака округлять. Можно пока пофлудить :)
10 Икогнито
 
29.12.09
15:13
Выразить КАК ЧИсло (разрядность)
11 los_hooliganos
 
29.12.09
15:14
(0) это называется не округление, а усечение. кури мануалы.

УСЕЧЬ(150.75, 0, 1)

результат: 150
12 Rico_1C
 
29.12.09
15:16
Зачем в запросе?!..

При выводе/получен форматом..
13 los_hooliganos
 
29.12.09
15:18
(12) да?? а если мне надо в запросе арифимическую операцию сделать и в зависимости от результата сделать ВЫБОР КОГДА
14 Rico_1C
 
29.12.09
15:21
(13) Больще НИчего НЕнадо?!..  ;))
15 EasyRider
 
29.12.09
15:28
(11)Извиняюсь,но для меня "Усечь" - это что-то новое.В СП не нашел ничего.Не дадите ссылку почитать где про эту функцию?
16 Serg_1960
 
29.12.09
15:30
Вот, моё любимое в запросе с отбрасыванием значений "после запятой" :)

Запрос = Новый Запрос("ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0), ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0), СЕКУНДА, ЧислоСДробнойЧастью), СЕКУНДА) КАК ЧислоБезДробнойЧасти");
17 ptiz
 
29.12.09
15:30
ВЫБОР КОГДА Ч = ВЫРАЗИТЬ(Ч КАК ЧИСЛО(15,0)) ТОГДА Ч ИНАЧЕ ВЫРАЗИТЬ(Ч - 0.5 КАК ЧИСЛО(15)) КОНЕЦ
18 Serg_1960
 
29.12.09
15:33
(17) ВЫРАЗИТЬ(НЕ МОГУ) КАК СКУЧНОЕ РЕШЕНИЕ :))
19 los_hooliganos
 
29.12.09
15:39
Мдя... а кто-то мне втирал что язык запросов в 8.х полноценный т-скуль)))
(15) Синтаксис

ROUND ( numeric_expression , length [ ,function ] )


Аргументы
numeric_expression
Выражение категории типа точных числовых или приблизительных числовых данных, за исключением типа данных bit.

length
Точность, до которой необходимо округлять значение аргумента numeric_expression. Аргумент length должен быть выражением типа tinyint, smallint или int. Когда аргумент length является положительным числом, numeric_expression округляется до числа десятичных разрядов, указанных в аргументе length. Когда length является отрицательным числом, numeric_expression округляется слева от точки, отделяющей десятичную дробь от целого числа, как указано в length.

function
Тип операции, которую необходимо выполнить. Аргумент function должен иметь тип tinyint, smallint или int. Когда аргумент function опускается или имеет значение 0 (значение по умолчанию), аргумент numeric_expression округляется. Когда указывается значение, не равное 0, numeric_expression усекается.

Типы возвращаемых данных
Возвращает тот же тип, что и выражение numeric_expression.

Замечания
Функция ROUND всегда возвращает значение. Если аргумент length имеет отрицательное значение и больше числа знаков до точки, отделяющей десятичную дробь от целого числа, ROUND возвращает 0.

Пример  Результат  
ROUND(748.58, -4)
0


Функция ROUND возвращает округленное значение выражения numeric_expression независимо от типа данных, когда length является отрицательным числом.

Примеры  Результат  
ROUND(748.58, -1)
750.00

ROUND(748.58, -2)
700.00

ROUND(748.58, -3)
1000.00


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

Копировать код
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
GO


Ниже приводится результирующий набор.

Копировать код
----------- -----------
123.9990    124.0000    


Б. Использование функции ROUND и округляющих аппроксимаций
В следующем примере показаны округление и аппроксимация.

Копировать код
SELECT ROUND(123.4545, 2);
GO
SELECT ROUND(123.45, -2);GO


Ниже приводится результирующий набор.

----------

123.4500


(1 row(s) affected)


--------

100.00


(1 row(s) affected)

В. Использование функции ROUND для усечения
В следующем примере используются две инструкции SELECT для демонстрации различия между округлением и усечением. Первая инструкция округляет результат. Вторая инструкция усекает результат.

Копировать код
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO


Ниже приводится результирующий набор.

Копировать код
--------
151.00

(1 row(s) affected)

--------
150.00

(1 row(s) affected)
20 EasyRider
 
29.12.09
15:46
(19)Такой функции в общем-то нет в 1с-ном языке запросов?Я правильно понял?
21 los_hooliganos
 
29.12.09
15:55
(20) да, но я почему то думал что есть.
22 los_hooliganos
 
29.12.09
15:55
(21) в т-скл точно есть.
23 НЕА123
 
29.12.09
16:15
ВЫРАЗИТЬ(Ч + 0.5 КАК ЧИСЛО(15)) - 1
24 НЕА123
 
29.12.09
16:16
ну, а самое чистое тут: (16).
25 Ksandr
 
29.12.09
16:20
про УСЕЧЬ - шутка?
26 6tuf
 
29.12.09
20:34
(25) конечно есть! а еще есть функция ОТРЕЗАТЬ_Н***Й
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.