Имя: Пароль:
1C
1С v8
Отсутствие в 1с числовых реквизитов с плавающей запятой и способы реализации.
0 Провинциальный 1сник
 
21.12.15
07:35
Как известно, в 1с числовые переменные хоть и не с плавающей точкой, но фактически "с неограниченной точностью". Тем не менее, в базе нельзя хранить больше 10 значащих цифр после запятой.
Как лучше обойти данное ограничение в случае необходимости хранить более точные значения? Можно хранить как строки, и работать с ними через ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр - это работает. Но может есть лучший способ?
1 Повелитель
 
21.12.15
07:37
Храни умноженное на 1 млн, или 1 млрд.
2 Повелитель
 
21.12.15
07:39
Как число имею ввиду.
0.1234567890123456789 можно хранить как
123456,7890123456789 или 123456789,0123456789
3 Провинциальный 1сник
 
21.12.15
07:40
(2) Это понятно, хранить само значащее число и нормализующий коэффициент.
4 PuhUfa
 
21.12.15
07:45
(0) как вариант: хранить в обычном числовом реквизите.
в целой части хранить все число целиком без запятой, в дробной хранить позицию этой самой запятой.
5 ObjectRelation Model
 
21.12.15
07:58
а какие такие высокоточные задачи у вас 1С решает?
6 ИС-2
 
naïve
21.12.15
08:01
хранить в строке, а при вычислении умножать 1000000000000000

Но может ли SQL работать с таким числами...
7 H A D G E H O G s
 
21.12.15
08:10
Значение отдельно, мантиссу отдельно
8 Drac0
 
21.12.15
08:11
(0) Хранить два числовых реквизита: целая часть и десятичная часть.
9 ДемонМаксвелла
 
21.12.15
08:24
(0) в порядке бреда - хранить логарифм числа
10 H A D G E H O G s
 
21.12.15
08:29
(9) Почему бреда? Так делают все.
11 ДемонМаксвелла
 
21.12.15
08:33
(10) потери машинного времени на вычисления. Но если это несущественно, то почему бы и нет.
12 ifso
 
21.12.15
08:33
(0) пи не влазит?)
13 Провинциальный 1сник
 
21.12.15
08:36
(12) Например, при необходимости хранить промежуточные данные расчета себестоимости в многоузловом многопередельном производстве. Там лишней точности не бывает, в себестоимости например заклепки копейка - это очень много.
14 vde69
 
21.12.15
08:51
(13) 10 знаков после запятой это с огромным избытком...

предположим в изделии миллион деталек, значит точность самого изделия это 6 нулей (миллион) + 2 нуля (копейки), итого 8 знаков....

что за изделия у Вас ?
15 ifso
 
21.12.15
08:51
(13) если решишь как обмануть оперирование, то сможешь забить на хранение, не?
16 Повелитель
 
21.12.15
08:54
(13) Тогда задача проще, 10 знаков или даже меньше вам точно хватит.

У нас есть один сложный подгон по ценам, так нам 6 знаков хватило.
17 VladZ
 
21.12.15
08:55
(0) Зачем это нужно?
18 vde69
 
21.12.15
08:56
(13) я тебе так скажу, у шли заказы на метиз (гайки, саморезы и т.д.) в тендерах везде стояла цена за 1шт в $ (например 1шт= 0.00013544$) заказчику это нужно было для сравнения цен разных производителей.

не смотря на такие цифорки я придумал алгоритмы которые позволяют нам обходится 2 знаками после запятой и вполне штатно работать в торговле и бухии...

так, что у Вас что-то не то в королевстве...
19 Провинциальный 1сник
 
21.12.15
09:09
(18) Да можно придумать алгоритмы, всё можно. Но работать с плавучкой в некоторых случаях было бы просто удобнее.
20 Мэс33
 
21.12.15
09:14
(19) в бухгалтерии не бывает таких потребностей.
Хотя бы четкий пример привели.
21 HeKrendel
 
21.12.15
09:19
Храни такие значения в строке ;-)
22 Провинциальный 1сник
 
21.12.15
10:07
(20) Кролик это не только ценный мех, 1с это не только бухгалтерия)
23 Провинциальный 1сник
 
21.12.15
10:08
(21) Ну я это и предложил в (0), но в этом случае язык запросов не сможет обрабатывать такие данные.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший