30.05.2006, 11:37 | #1 |
Участник
|
Для точности вычислений необходимо использование чисел с 20-ю знаками после целой части.
Что можете посоветовать какой тип использовать, в документации тип real всего 16 знаков и на целую и дробную части? К тому же эти числа надо хранить в базе и регулярно пересчитывать. |
|
30.05.2006, 12:25 | #2 |
Участник
|
Ох... Ничего, кроме хранения как строки в голову не приходит.
Согласен, это очень и очень плохое решение. |
|
30.05.2006, 12:33 | #3 |
Участник
|
Добрый день Mazzy Со строками совсем не то что хотелось бы , может что то есть еще ?
Совсем тупиковая ситуация.... |
|
30.05.2006, 12:51 | #4 |
Участник
|
Сначала надо уточнить постановку задачи:
20 знаков - это 20 значащих цифр или же сначала идут нули, а потом, где-то в конце 2...3 цифры? Не уверен, насчет AXAPTA, но большинство языков программирования имеют точность расчета до 16 значащих цифр (точнее, до 15.7). Это значит, что вне зависимости от того, сколько цифр (разрядов) допустимо вводить в числовой тип данных, но доверять из всех введенных цифр можно будет только первым 16. Все остальное будет заполнено случайным образом или нулями. Так вот, если необходимо именно 20 значащих цифр - только хранение в символьном виде + собственные функции пересчета. Если же это просто числа вроде 1.23E-20, т.е. собственно значащих цифр немного, просто степень числа такая большая, то тут уже возможны варианты. Например, хранить значение и степень в разных полях. |
|
30.05.2006, 13:13 | #5 |
Участник
|
в том то и дело что все числа значащие
тут еще предлагают ... ну есть workaround мы можем хранить значение с шифтом типа не 10000000.1234567890123456789 а 100000001234567890123456789 или 100000001234567890000000000 и если надо, делить его на известную точность, т.е. 1000000000..000 т.е. 10^n |
|
30.05.2006, 13:48 | #6 |
Участник
|
Где бы вы ни поставили десятичный разделитель, значащих цифр все равно будет 16.
|
|
31.05.2006, 10:35 | #7 |
Модератор
|
Используйте внешнюю dll для рассчетов
С Уважением, Георгий |
|
02.06.2006, 07:16 | #8 |
Участник
|
Как вариант - хранить ДВА числа, одно для младших разрядов, одно для старших (логическое продолжение указанного вами workaround) Конечно, будете иметь проблемы с оперированием такими монстрами, но в свое время на ассемблере и не таким занимались
|
|
02.06.2006, 09:33 | #9 |
Moderator
|
Действительно - внешняя DLL, имхо, лучший вариант. Хранить числа в базе в виде текста, а вычислять с пом.внешней компоненты.
Тем более найти фриварную математическую библиотеку можно легко |
|