|
v8: В чем причина округления? | ☑ | ||
---|---|---|---|---|
0
ezhikofff
16.07.13
✎
13:07
|
Народ добрый день,
считаю на калькуляторе 79 627.13 / 93 355.93 = 0.852941318242987 а запрос упорно выдает результат 0.852941 В чем может быть причина? |
|||
1
Волшебник
16.07.13
✎
13:08
|
в округлении
|
|||
2
shuhard
16.07.13
✎
13:09
|
(0) что это у вас часы всё время показывают пол двенадцатого - это барометр (с)
|
|||
3
ezhikofff
16.07.13
✎
13:09
|
строка запроса
(НДСПредъявленныйОстаткиИтог.НДСОстаток - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.НДСОстаток, 0)) / НДСПредъявленныйОстаткиИтог.НДСОстаток) где тут округление? |
|||
4
Волшебник
16.07.13
✎
13:10
|
(3) Оно неявное
|
|||
5
Волшебник
16.07.13
✎
13:11
|
Кстати, твой калькулятор тоже округляет.
Вот более точный ответ: 0,85294131824298681401385000395797 |
|||
6
ezhikofff
16.07.13
✎
13:11
|
(4) и как его выявить?
|
|||
7
Fragster
гуру
16.07.13
✎
13:12
|
Выбрать выразить(0 как Число(15,12)) + 79627.13 / 93355.93
|
|||
8
H A D G E H O G s
16.07.13
✎
13:12
|
0,852941318242986814013850003957970319
|
|||
9
Волшебник
16.07.13
✎
13:13
|
(8) Не выпендривайся
|
|||
10
ezhikofff
16.07.13
✎
13:14
|
(5) я думаю 15 знаков будет достаточно чтобы сошлись эти гребанные копейки:)
|
|||
11
H A D G E H O G s
16.07.13
✎
13:14
|
выбрать
79627.13 / 93355.93 даст 0,852941318242986814013850003957970319 |
|||
12
YHVVH
16.07.13
✎
13:14
|
ВЫБРАТЬ 79627.13 / 93355.93
все нормально выдает у меня 0,852941318242986814013850003957970319 |
|||
13
Fragster
гуру
16.07.13
✎
13:15
|
максимум на скуле 2005 получается так (правда результат не меняется от предыдущих):
Выбрать выразить(0 как Число(38,38)) + 79627.13 / 93355.93 |
|||
14
ezhikofff
16.07.13
✎
13:15
|
(7) ВЫРАЗИТЬ((НДСПредъявленныйОстаткиИтог.НДСОстаток - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.НДСОстаток, 0)) / НДСПредъявленныйОстаткиИтог.НДСОстаток КАК ЧИСЛО(25, 20))
выдает 0.852941 |
|||
15
Fragster
гуру
16.07.13
✎
13:16
|
(14) выражать надо не результат, а операнды
|
|||
16
ezhikofff
16.07.13
✎
13:16
|
(15) еще раз
|
|||
17
Fragster
гуру
16.07.13
✎
13:18
|
(16) скуль выбирает тип результата по типу операндов
|
|||
18
Xapac
16.07.13
✎
13:18
|
(10) НЕТ. для копеек делают по другому. они у тебя никогда не сойдутся.
|
|||
19
Fragster
гуру
16.07.13
✎
13:19
|
(11)
выбрать Выразить(79627.13 КАК Число(15,2)) / Выразить(93355.93 КАК Число(15,2)) |
|||
20
Fragster
гуру
16.07.13
✎
13:20
|
(18) прав
|
|||
21
ezhikofff
16.07.13
✎
13:20
|
(18) а че с ними делать?
там 10 копеек с 2 мульонов не сходиться |
|||
22
beer_fan
16.07.13
✎
13:20
|
(18) +100500
|
|||
23
Fragster
гуру
16.07.13
✎
13:20
|
(21) избавься от деления в пользу вычитания
|
|||
24
ezhikofff
16.07.13
✎
13:21
|
(19) ща попробуем спс:)
|
|||
25
ezhikofff
16.07.13
✎
13:21
|
(21) млять так этож типово
|
|||
26
ezhikofff
16.07.13
✎
13:21
|
й запрос
|
|||
27
ezhikofff
16.07.13
✎
13:27
|
((ВЫРАЗИТЬ(НДСПредъявленныйОстаткиИтог.НДСОстаток КАК ЧИСЛО(15, 2))) -
(ВЫРАЗИТЬ(ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.НДСОстаток, 0) КАК ЧИСЛО(15, 2)))) / (ВЫРАЗИТЬ(НДСПредъявленныйОстаткиИтог.НДСОстаток КАК ЧИСЛО(15, 2))) вот оно чего выдало 0.8529413182429868140138 |
|||
28
Fragster
гуру
16.07.13
✎
13:27
|
(27) ну да. ведь (19) было к (11). А тебе надо до целевой точности увеличивать.
|
|||
29
Ненавижу 1С
гуру
16.07.13
✎
13:29
|
а у меня выдает 0,852941318242986814013850003957970319
из запроса выбрать 79627.13 / 93355.93 |
|||
30
ezhikofff
16.07.13
✎
13:30
|
(28) только все равно я тут не контролирую число знаков после зпт, а как их еще увеличить?
|
|||
31
Fragster
гуру
16.07.13
✎
13:31
|
больше 0,852941318242986814013850003957970319 знаков, судя по всему, не получишь
|
|||
32
Fragster
гуру
16.07.13
✎
13:32
|
(30) контролируешь, но косвенно. типа скуль сам решает, сколько знаков у результата и выводит в соответствии. ЕМНИП просто числа он воспринимает как 6 знаков, а у тебя не просто числа, а типизированные колонки
|
|||
33
ezhikofff
16.07.13
✎
13:33
|
так у меня и этого не получает, вон на ...138 конец
|
|||
34
Fragster
гуру
16.07.13
✎
13:35
|
(33) поставь везде точность (32,32)
|
|||
35
Lama12
16.07.13
✎
13:38
|
Какое выразить в запросах? Народ вы стебетесь?
Там технические ограничения на точность вычисления в запросах. На ИТС про это написано. |
|||
36
ezhikofff
16.07.13
✎
13:39
|
да догнал он и с Число(15,2)
ну буду иметь ввиду теперь спасибо |
|||
37
ezhikofff
16.07.13
✎
13:40
|
(35) в чем заключается ограничение?
|
|||
38
Xapac
16.07.13
✎
13:41
|
(21)дано 10
распределить допустим 1/3 на 3 человека 1-у 10/3 = 3,333 осталось 10 - 3,333 = 6,667 2-у 10/3 = 3,333 осталось 6,668 - 3,333 = 3,334 3-у 10/3 = 3,333 осталось 3,334 - 3,333 = 0,001 3-у отдаешь одну сотую копейки. |
|||
39
Lama12
16.07.13
✎
13:41
|
(37) Еще и книжки за тебя почитать?
|
|||
40
ezhikofff
16.07.13
✎
13:42
|
(34) нее 32 многовать, скуль орать начинает
|
|||
41
ezhikofff
16.07.13
✎
13:43
|
(39) ну для народа чеж не читануть то?))
|
|||
42
hhhh
16.07.13
✎
14:36
|
(41) а вы математику в школе учили? Приближенные вычисления?
|
|||
43
Ненавижу 1С
гуру
16.07.13
✎
15:07
|
прикольно получается:
выбрать 79627.13/93355.93, выразить(79627.13 как число(15,2)) / выразить(93355.93 как число(15,2)), выразить(79627.13 как число(15,3)) / выразить(93355.93 как число(15,3)), выразить(79627.13 как число(15,4)) / выразить(93355.93 как число(15,4)), выразить(79627.13 как число(15,5)) / выразить(93355.93 как число(15,5)), выразить(79627.13 как число(15,6)) / выразить(93355.93 как число(15,6)), выразить(79627.13 как число(15,7)) / выразить(93355.93 как число(15,7)), выразить(79627.13 как число(15,8)) / выразить(93355.93 как число(15,8)) http://sqlbooks.ru/readarticle.aspx?part=02&file=tsql14 |
|||
44
EvgeniuXP
16.07.13
✎
15:25
|
(43) может ты это имел в виду:
ВЫРАЗИТЬ(ВЫРАЗИТЬ(79627.13 КАК ЧИСЛО(15, 2)) / ВЫРАЗИТЬ(93355.93 КАК ЧИСЛО(15, 2)) КАК ЧИСЛО(15,2)) а то что результат одинаковый (в твоем примере) - прикольного не вижу ничего. |
|||
45
Ненавижу 1С
гуру
16.07.13
✎
15:28
|
(44) не это, там результат немного разный, по крайней мере под MS SQL
|
|||
46
Drac0
16.07.13
✎
15:29
|
(44) у меня тоже для 4,5,6 отличается от других.
|
|||
47
Ненавижу 1С
гуру
16.07.13
✎
15:30
|
+(45) да и в файловой, но отличается от MS SQL
возможно и от релиза 1с тоже зависит |
|||
48
Fragster
гуру
16.07.13
✎
15:37
|
выбрать
79627.13/93355.93, выразить(79627.13 как число(7,2)) / выразить(93355.93 как число(8,2)), выразить(79627.13 как число(8,3)) / выразить(93355.93 как число(8,3)), выразить(79627.13 как число(9,4)) / выразить(93355.93 как число(9,4)), выразить(79627.13 как число(10,5)) / выразить(93355.93 как число(10,5)), выразить(79627.13 как число(11,6)) / выразить(93355.93 как число(11,6)), выразить(79627.13 как число(12,7)) / выразить(93355.93 как число(12,7)), выразить(79627.13 как число(13,8)) / выразить(93355.93 как число(13,8)), выразить(79627.13 как число(14,9)) / выразить(93355.93 как число(14,9)), выразить(79627.13 как число(15,10)) / выразить(93355.93 как число(15,10)), выразить(79627.13 как число(16,11)) / выразить(93355.93 как число(16,11)), выразить(79627.13 как число(17,12)) / выразить(93355.93 как число(17,12)) интересно, почему оно при 12 меньше, чем при 9 |
|||
49
Fragster
гуру
16.07.13
✎
15:38
|
вернее понятно, почему - написано по ссылке. интересно, почему именно такие правила приняли
|
|||
50
Ненавижу 1С
гуру
16.07.13
✎
15:41
|
(49) хз, в Firebird все гораздо проще, точность результата определяется как сумма точностей аргументов
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |