Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Добрый день Попросили разобраться с такой проблемой - есть запрос, тянущий данные документов из спецификации, в том числе и цену, причем цену он считает как сумма в документе разделить на кол-во, иногда оно получается с большим знаменателем, например 32.52727777777778, но в запросе он округляется до двух символов. Когда это выгружается в 1с, то они считают это округленное значение умножить на кол-во и получают сумму по этому товару чуть больше. Как это в ODBC победить? При том же запросе из isql - получаю числа без округления, IBE показывает округленно, но при наведении курсора - показывает полное значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 10:17 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Gallemar, 1 диалект? Или хранишь числа как DOUBLE PRECISSION? Я бы посоветовал для внутренних расчётов от всяких там делений брать точность побольше, например 4, а не 2 знака. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 10:31 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, первый диалект. Сорри,соврал немного - не до двух,а до трех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 10:38 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
GallemarКогда это выгружается в 1с, то они считают это округленное значение умножить на кол-во и получают сумму по этому товару чуть больше. Как это в ODBC победить? Раз у тебя неверно считает 1С, то и побеждать надо в 1С. Кстати, разве считать цену по среднему не запрещено теперь?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 11:33 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Gallemar, вообще это странно. Если как ты сказал округляется до трёх знаков, то 32.527 * N < 32.52727777777778 * N ? т.е. должно получится меньше если до 2ух 32.53 * N > 32.52727777777778 * N то будет больше В общем случае схождения результатов из-за ошибок округления не решаемая задача. Я бы предложил округлять до 4ёх знаков. N какой приблизительно. Можешь назвать максимум? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 11:42 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, DOC_DATE DOCINDEX ID_CLIENTS ARTICUL PRICERUB QUANTITY OSTATOK =========== ======== ============ ============================== ======================= ======================= ======================= 19-MAR-2015 10458 87010 78.99000000000000 24.00000000000000 1.000000000000000 19-MAR-2015 10458 156506 113.4100000000000 12.00000000000000 6.000000000000000 19-MAR-2015 10458 155059 113.9200000000000 12.00000000000000 6.000000000000000 19-MAR-2015 10458 155046 32.52727777777778 180.0000000000000 210.0000000000000 19-MAR-2015 10458 134865 49.11000000000000 20.00000000000000 16.00000000000000 19-MAR-2015 10458 155038 126.7100000000000 12.00000000000000 1.000000000000000 19-MAR-2015 10458 98326 96.02000000000000 12.00000000000000 15.00000000000000 19-MAR-2015 10458 67871 74.10000000000001 12.00000000000000 4.000000000000000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 11:55 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Gallemar, вот простой пример: Колво = 29 Сумма = 112.35 Цена = Сумма / Колво = 3.87414 ЦенаОкругл = 3.87 Сумма1С = ЦенаОкругл * Колво = 112.23 - совсем не равно 112.35 Т.ч. как костыльный выход - не округлять цену до 2 знаков "при передаче в 1С". А нормальный выход - хранить цену и передавать ее куда и когда надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 05:47 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
YuRockне округлять цену до 2 знаков и до 3х, и до 4х.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 05:48 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
YuRockТ.ч. как костыльный выход - не округлять цену до 2 знаков "при передаче в 1С".Насколько я понял ТС-а, оно у него "само" где-то округляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 09:13 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
ExterisНасколько я понял ТС-а, оно у него "само" где-то округляется.Ну значит не повезло ему в жизни. Тогда единственный выход - поставить в настройках галочку "Само не округлять". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 17:50 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
YuRockExterisНасколько я понял ТС-а, оно у него "само" где-то округляется.Ну значит не повезло ему в жизни. Тогда единственный выход - поставить в настройках галочку "Само не округлять". Объяснил специалистам желтой программы кто им жить счастливо мешает,дальше не моя забота. p.s. если у кого есть код подключения из 1с к FB с помощью ODBC (не ADO!!!!) - поделитесь пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 07:17 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Gallemarp.s. если у кого есть код подключения из 1с к FB с помощью ODBC (не ADO!!!!) - поделитесь пожалуйста. а это как? вот мне тоже интересно. особенно без объекта ADODB.Connection и ADODB.RecordSet. тебе вообще что нужно? работать с базой Firebird прямо из родного скрипта 1С? тогда вот так можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2015, 01:04 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
PEAKTOP,думаю что округление идет при работе через ADO, пока правда не проверял, некогда было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2015, 16:23 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
Gallemar, Я подозреваю, что "жёлтая программа" тут не при чём. У тебя число как NUMERIC(15,3) объявлено, поди? Дело в особенности первого диалекта. Внутри число хранится как DOUBLE PRECISION, и любые расчёты ведутся с полной точностью, на сколько цифр хватит. Тогда как разные "клиентские" библиотеки ведут себя по-разному с такими числами. Кто-то тупо получает как есть, double, а кто-то честно приводит к виду, заданному в типе, т.е. NUMERIC(15,3) Проблема не в округлении, а в том, что ты позволяешь системе хранить неокруглённые под твоим контролем данные и использовать их для расчёта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2015, 17:17 |
|
||
|
Округление при запросе к полю с плавающей точкой
|
|||
|---|---|---|---|
|
#18+
WildSeryGallemar, Я подозреваю, что "жёлтая программа" тут не при чём. У тебя число как NUMERIC(15,3) объявлено, поди? Ты прав. Хранится как Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2015, 04:24 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=79&tid=1562951]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
3ms |
| others: | 269ms |
| total: | 441ms |

| 0 / 0 |
