AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.05.2006, 11:37   #1  
IgorPon is offline
IgorPon
Участник
 
3 / 10 (1) +
Регистрация: 30.05.2006
Для точности вычислений необходимо использование чисел с 20-ю знаками после целой части.
Что можете посоветовать какой тип использовать, в документации тип real всего 16 знаков и на целую и дробную части? К тому же эти числа надо хранить в базе и регулярно пересчитывать.
Старый 30.05.2006, 12:25   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Ох... Ничего, кроме хранения как строки в голову не приходит.
Согласен, это очень и очень плохое решение.
__________________
полезное на axForum, github, vk, coub.
Старый 30.05.2006, 12:33   #3  
IgorPon is offline
IgorPon
Участник
 
3 / 10 (1) +
Регистрация: 30.05.2006
Добрый день Mazzy Со строками совсем не то что хотелось бы , может что то есть еще ?
Совсем тупиковая ситуация....
Старый 30.05.2006, 12:51   #4  
Владимир Максимов_imported is offline
Владимир Максимов_imported
Участник
 
33 / 10 (1) +
Регистрация: 20.01.2004
Сначала надо уточнить постановку задачи:

20 знаков - это 20 значащих цифр или же сначала идут нули, а потом, где-то в конце 2...3 цифры?

Не уверен, насчет AXAPTA, но большинство языков программирования имеют точность расчета до 16 значащих цифр (точнее, до 15.7). Это значит, что вне зависимости от того, сколько цифр (разрядов) допустимо вводить в числовой тип данных, но доверять из всех введенных цифр можно будет только первым 16. Все остальное будет заполнено случайным образом или нулями.

Так вот, если необходимо именно 20 значащих цифр - только хранение в символьном виде + собственные функции пересчета.

Если же это просто числа вроде 1.23E-20, т.е. собственно значащих цифр немного, просто степень числа такая большая, то тут уже возможны варианты. Например, хранить значение и степень в разных полях.
Старый 30.05.2006, 13:13   #5  
IgorPon is offline
IgorPon
Участник
 
3 / 10 (1) +
Регистрация: 30.05.2006
в том то и дело что все числа значащие


тут еще предлагают ...

ну есть workaround
мы можем хранить значение с шифтом
типа не 10000000.1234567890123456789
а 100000001234567890123456789
или 100000001234567890000000000
и если надо, делить его на известную точность, т.е. 1000000000..000
т.е. 10^n
Старый 30.05.2006, 13:48   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от IgorPon Посмотреть сообщение
мы можем хранить значение с шифтом
типа не 10000000.1234567890123456789
а 100000001234567890123456789
или 100000001234567890000000000
и если надо, делить его на известную точность, т.е. 1000000000..000
т.е. 10^n
Где бы вы ни поставили десятичный разделитель, значащих цифр все равно будет 16.
__________________
полезное на axForum, github, vk, coub.
Старый 31.05.2006, 10:35   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Используйте внешнюю dll для рассчетов

С Уважением,
Георгий
Старый 02.06.2006, 07:16   #8  
baluev1 is offline
baluev1
Участник
 
4 / 10 (1) +
Регистрация: 10.03.2006
Как вариант - хранить ДВА числа, одно для младших разрядов, одно для старших (логическое продолжение указанного вами workaround) Конечно, будете иметь проблемы с оперированием такими монстрами, но в свое время на ассемблере и не таким занимались
Старый 02.06.2006, 09:33   #9  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Действительно - внешняя DLL, имхо, лучший вариант. Хранить числа в базе в виде текста, а вычислять с пом.внешней компоненты.
Тем более найти фриварную математическую библиотеку можно легко
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:10.