|
Округление результата запроса | ☑ | ||
---|---|---|---|---|
0
konst1231
24.06.15
✎
15:26
|
Здравсвуйте,
При вычисления выражения в запросе, получается разный результат, не могу понять почему, вот запрос: ВЫБРАТЬ Док.Сумма / (Док.Количество * Док.Коэффициент / Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) * 1 * &Курс / &Кратность КАК Сумма, Док.Сумма / (Док.Количество * Док.Коэффициент / Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) * 1 * &Курс КАК Поле1, Док.Сумма * &Курс КАК Поле2 ИЗ (ВЫБРАТЬ Реализация.Номенклатура КАК Номенклатура, Реализация.Коэффициент КАК Коэффициент, СУММА(Реализация.Количество) КАК Количество, СУММА(Реализация.Сумма) КАК Сумма ИЗ Документ.РеализацияТоваровУслуг.Товары КАК Реализация ГДЕ Реализация.Ссылка = &ДокументСсылка СГРУППИРОВАТЬ ПО Реализация.Номенклатура, Реализация.Коэффициент) КАК Док Результат: Сумма Поле1 Поле2 554,855 554,85500001 554,855000007 554,855 554,85500001 554,855000007 Исходные данные: Курс 36,029545455 Кратность 1,000000000 Док.Сумма = 15,4 Док.Количество=Док.Коэффициент=Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент=1 |
|||
1
konst1231
24.06.15
✎
15:27
|
Платформа 8.3.5.1486
Конфа УТ 103. База серверная ms sql |
|||
2
MadHead
24.06.15
✎
15:28
|
есть при вычислениях числе с плавающей запятой подобные явления, связаны с переводом из двоичной в 10тичную систему счисления
|
|||
3
MadHead
24.06.15
✎
15:29
|
И не нужно считать стружки от копеек )
|
|||
4
konst1231
24.06.15
✎
15:38
|
(3) Что и до какого знака округлять чтобы избежать подобной неодназначности?
|
|||
5
itlikbez
24.06.15
✎
15:42
|
(0) Компьютеры считают не точно. Вы об этом не знали?
|
|||
6
konst1231
24.06.15
✎
15:45
|
(5) Не точно или м.б. получен разное значений одного и того же выражения?
|
|||
7
Ненавижу 1С
гуру
24.06.15
✎
15:46
|
Курс 36,029545455
какой-то запредельно точный |
|||
8
itlikbez
24.06.15
✎
15:48
|
(6) Может быть. Если считать по-разному, то и результат приближенных вычислений будет разный. Чего тут удивительного?
|
|||
9
Ненавижу 1С
гуру
24.06.15
✎
15:50
|
надо смотреть план запроса SQL
врзможно движок 1С приводит результаты к разной точности NUMERIC кстати 554,855000007 точное значение |
|||
10
konst1231
24.06.15
✎
15:51
|
(7) В типовой УТ 10.3 есть такая строчка
КурсОплаты = ?(Выборка.СуммаВзаиморасчетов = 0, 0, Выборка.СуммаРегл/Выборка.СуммаВзаиморасчетов); Далее этот курс без округления передается в запрос. Используется для печати т12 |
|||
11
Ненавижу 1С
гуру
24.06.15
✎
15:52
|
база какая?
|
|||
12
konst1231
24.06.15
✎
15:53
|
(8) Ок допустим не удивительно, вопрос, как уйти от недоназначности
|
|||
13
konst1231
24.06.15
✎
15:54
|
(11)
Платформа 8.3.5.1486 Конфа УТ 103. База серверная ms sql |
|||
14
itlikbez
24.06.15
✎
15:55
|
(12) Округлять.
|
|||
15
Fragster
гуру
24.06.15
✎
15:55
|
||||
16
Ненавижу 1С
гуру
24.06.15
✎
15:56
|
оберни все выражения в ВЫРАЗИТЬ(... КАК ЧИСЛО(18,Точность))
|
|||
17
konst1231
24.06.15
✎
15:56
|
(14) До какого знака, и что
|
|||
18
ХардHard
24.06.15
✎
15:57
|
(17) Точность = 2 . Округляй финальный результат.
|
|||
19
itlikbez
24.06.15
✎
15:58
|
(17) До любого, результат.
|
|||
20
konst1231
24.06.15
✎
15:58
|
(18) А почему именно 2?
|
|||
21
Ненавижу 1С
гуру
24.06.15
✎
16:00
|
(20) потому что деньги в РФ принято округлять до копеек
|
|||
22
ХардHard
24.06.15
✎
16:01
|
(21) Может у него все поля цена/сумма в базе имеют точность 10 знаков. %)
|
|||
23
konst1231
24.06.15
✎
16:02
|
У меня задача посчитать погрешность округления при по строчном вычислении сумм в накладной
|
|||
24
Fragster
гуру
24.06.15
✎
16:03
|
это вы себестоимость одного шурупа при комплектации не считали...
|
|||
25
ХардHard
24.06.15
✎
16:04
|
(24) Думается мне , тут такой задачи и близко не стоит.
(23) А в накладной сколько знаков точность? С чем сравнивать собрался?! |
|||
26
konst1231
24.06.15
✎
16:07
|
(25) Вопрос же не про копейки. Почему решили что при окгруглении до 2-х знаков результат в общем случае будет одинаковый, а при округлении до 9 знаков разный?
|
|||
27
konst1231
24.06.15
✎
16:09
|
(16) при если все выражени обернуть в ВЫРАЗИТЬ( как ЧИСЛО(18, 9)) - результат такой же как в (0)
|
|||
28
Fragster
гуру
24.06.15
✎
16:11
|
(27) внимательно прочитай (15)
|
|||
29
ХардHard
24.06.15
✎
16:11
|
(26)(27)
Короче , тебе заняться нечем , да? |
|||
30
Fragster
гуру
24.06.15
✎
16:11
|
точность 18 прокатывает при двух операндах
|
|||
31
konst1231
24.06.15
✎
16:12
|
(28) пошел читать
|
|||
32
Fragster
гуру
24.06.15
✎
16:12
|
тебе нужно не каждый в 18 приводить, а вложенно, типа Выразить(Выразить(Выразить(аб как число(18,8))в как число(18,8))...)
|
|||
33
itlikbez
24.06.15
✎
16:13
|
(26) Приближенные вычисления производятся с определенной точностью. Эта точность практически (!) всегда больше двух знаков.
|
|||
34
konst1231
24.06.15
✎
16:23
|
(32) Ок, спасибо, буду пробовать и осмысливать статью. А на файловой интересно базе, исходя из (15) такого быть не должно?
|
|||
35
hhhh
24.06.15
✎
16:24
|
(33) точность результата зависит от точности исходных данных. У ТС поле Сумма округлена до 3х знаков, значит и в результате мы можем доверять только 3м знакам после запятой, остальные цифры случайные, мусор. У ТС так и есть Поле1 = Поле2 = 554,855
|
|||
36
Ненавижу 1С
гуру
24.06.15
✎
16:26
|
(35) это не совсем так, при умножении точность результата равна сумме точностей множителей
|
|||
37
Ненавижу 1С
гуру
24.06.15
✎
16:28
|
интересно, эта особенность видимо сильно зависит от СУБД и не является универсальной
|
|||
38
konst1231
24.06.15
✎
16:33
|
(35) Поле сумма не округлена до 3-х знаков. Тип реквзита сумма РТиУ число 15.2
|
|||
39
hhhh
24.06.15
✎
16:37
|
(36) Берем пример: 2.5 * 2.5 = 6.25
так так числа приближенные, с точностью 0.1, Значит в реальности они могут принимать любые значения от 2.45 до 2.55. То есть произведение будет в диапазоне 2.45*2.45 и 2.55*2.55. получаем 6.0025 <= Результат <= 6.5025 то есть точность вычисления (6.5 - 6) / 2 = 0,25 |
|||
40
hhhh
24.06.15
✎
16:38
|
(38) значит вы и третье цифре не можете доверять. ОТвет тогда 554,86
|
|||
41
МаксимМП23
24.06.15
✎
16:50
|
(0) а "* 1 * " в выражении - это какая-то личная фишка?
|
|||
42
ХардHard
24.06.15
✎
17:17
|
(41) ТС затейник тот еще.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |