01.02.2007, 17:46 | #1 |
Участник
|
Не хватает количества значащих цифр в действительных числах
В Axapte есть единственный действительный тип данных - real.
Встречался ли кто-нибудь с проблемой нехватки количества значащих цифр в нем? Поделитесь путями решения. |
|
01.02.2007, 17:55 | #2 |
SAP
|
Ужас! А сколько знаков необходимо.
|
|
01.02.2007, 17:55 | #3 |
Axapta
|
Что это вы там такое считаете, что вам 16 разрядов не хватает?
|
|
01.02.2007, 18:01 | #4 |
Программатор
|
Думаю выхода нет.
ЗЫ: Цель фирмы наверна заработать все деньги в мире, вот и думают заранее |
|
01.02.2007, 18:05 | #5 |
Участник
|
Дело в том, что переносили алгоритм из 1С в Axapta. В 1С - больше 16 цифр. В результате получилось, что один и тот же алгоритм в двух разных системах на одних и тех же входных данных выдает совершенно разные результаты. Причем неправильные результаты выдает именно Axapta. Порядок цифр результатов - 10^20 вместо десятков.
|
|
01.02.2007, 18:19 | #6 |
Участник
|
Цитата:
Сообщение от Alenka
Дело в том, что переносили алгоритм из 1С в Axapta. В 1С - больше 16 цифр. В результате получилось, что один и тот же алгоритм в двух разных системах на одних и тех же входных данных выдает совершенно разные результаты. Причем неправильные результаты выдает именно Axapta. Порядок цифр результатов - 10^20 вместо десятков.
|
|
01.02.2007, 18:21 | #7 |
Участник
|
Никак ЦУП решил перейти с 1С-а на Аксапту и не хватает цифирь на расчет баллистики выхода на орбиту ) Ну а если серьезно, может натолкнет на мысль - а Аксапте очень большие и очень маленькие значения используются в связке с каким-нибудь множителем - допустим курсы валют задаются за 100 единиц валюты, или цена товара может быть указана за несколько штук товара, вобщем в эту сторону наверное надо двигаться..
Последний раз редактировалось MironovI; 01.02.2007 в 18:23. |
|
01.02.2007, 18:26 | #8 |
Axapta
|
Сумма ВВП по всему миру: 55,5 триллионов USD ~ 1.5*10^15р. На копейки уже не хватит.
|
|
01.02.2007, 18:30 | #9 |
Участник
|
Цитата:
Сообщение от oip
Сумма ВВП по всему миру: 55,5 триллионов USD ~ 1.5 * 10^15р.
|
|
01.02.2007, 18:35 | #10 |
Аманд
|
10*(степень)21 - секстиллион [зетта-, цепто-]
10^603 - дуцентиллион 10^903 - трецентиллион 10^1203 - квадрингентиллион 10^1503 - квингентиллион 10^1803 - сесцентиллион 10^2103 - септингентиллион 10^2403 - окстингентиллион 10^2703 - нонгентиллион 10^3003 - миллиллион (или милиаиллион) 10^6003 - дуомилиаллион 10^9003 - тремиллиаллион 10^308760 - дуцентдуомилианонгентновемдециллион 10^3000003 - милиамилиаиллион 10^6000003 - дуомилиамилиаиллион 10^10^100 - гуголплекс Последний раз редактировалось Vals; 01.02.2007 в 18:40. |
|
01.02.2007, 18:40 | #11 |
Аманд
|
Цитата:
Может, они в белорусских зайцах считают
Цитата:
Это где же такая точность?
2. Копейка к копейке рубль даёт. 3. А с каждой транзакции по копейке вот и насобирали Последний раз редактировалось Vals; 01.02.2007 в 18:53. |
|
01.02.2007, 19:17 | #12 |
Участник
|
Все это, конечно, интересно. Но хотелось бы получить дельный совет. Понятно (теперь), что Axapta не переносит серьезных или даже не очень серьезных математических вычислений. На нет и суда нет.
Но хочется же найти выход!!! |
|
01.02.2007, 19:24 | #13 |
Участник
|
Скажите хоть, что именно этот алгоритм считает - что на входе, что на выходе? Неужели такие числа в ваших 1С использовались не только в целях тестирования?
|
|
01.02.2007, 19:25 | #14 |
Axapta
|
Не, ну правда, очень интересно, где это столько разрядов требуется?!
По теме: если очень хочется, можно: 1) Подумать, а действительно ли так уж нужны числа с таким большим кол-вом разрядов? Может можно все и с 16-ю разрядами реализовать? 2) Еще раз подумать. 3) Вынести расчет за пределы Аксапты. 4) Хранить числа с большИм количеством разрядов в двух (трех, четырех...) полях (или контейнере) и для их обработки написать свои функции, реализующие простейшие математические операторы. "Хочется" - не всегда означает, что это необходимо. Сложно поверить, что такие числа появляются на входе или на выходе алгоритма. А если это просто промежуточные значения - всегда можно чуть "подправить" алгоритм. |
|
|
За это сообщение автора поблагодарили: Alenka (1). |
01.02.2007, 19:29 | #15 |
Участник
|
Цитата:
И что ж за алгоритм у Вас такой? Какой смысл в такой точности? А выход именно в том, чтобы разобраться, что за алгоритм и зачем такая точность. |
|
01.02.2007, 19:31 | #16 |
Участник
|
4) Хранить числа с большИм количеством разрядов в двух (трех, четырех...) полях и для их обработки написать свои функции, реализующие простейшие математические операторы.
А скорость обработки какая будет? Всё равно, что воду напёрстками носить. |
|
01.02.2007, 19:33 | #17 |
Axapta
|
|
|
01.02.2007, 21:17 | #18 |
Участник
|
Для интересующихся: существует такой метод - метод Гоморри, у нас он используется для автоматического подбора нужного количества товара упаковками. Действительно, такая высокая точность нужна для промежуточных расчетов, а входные и выходные данные для данного метода практически всегда целые числа.
|
|
01.02.2007, 22:59 | #19 |
Участник
|
Цитата:
Сообщение от Alenka
Для интересующихся: существует такой метод - метод Гоморри, у нас он используется для автоматического подбора нужного количества товара упаковками. Действительно, такая высокая точность нужна для промежуточных расчетов, а входные и выходные данные для данного метода практически всегда целые числа.
Тогда сразу огорчу. Для некоторого набора данных Вам и 16 цифр значащих будет мало. Там используется выделение дробных частей из разниц вещественных чисел. Попробуйте выделить дробную часть из выражения типа 1+2/27-1/14. В десятичной системе исчисления будет очень нетривиально. Точность нужна нехилая. Но ручками считается легко и непринуждённо. Так что, приношу свои извинения oip - при правильной постановке задачи его метод будет более эффективен и довольно быстр. Потому вариантов вижу несколько. Либо вывести алгоритм за пределы Аксапты, например, написав всё это на каком-то другом языке, поддерживающем высокую точность чисел в расчётах. Либо поменять алгоритм. Либо сделать свой обработчик данного алгоритма на базе целых чисел (обработчик дробей). Кстати, в интернете полно описаний разного рода алгоритмов для такой задачи. Последний раз редактировалось Михаил Андреев; 01.02.2007 в 23:23. |
|
|
За это сообщение автора поблагодарили: Alenka (1). |
02.02.2007, 09:27 | #20 |
Участник
|
Спасибо за советы Михаилу Андрееву и oip!
|
|