![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с 20-значными числами [D5, D7, WinXP]
aidyn © (2008-08-29 12:46:00)Возникла необходимость проводить операции с 20-значными(а то и больше) числами. столкнулся с проблемой. что даже самый большой тип данных в дельфи не позволяет с ними оперировать. Точнее позволяет, но отсекает несколько последних цифр и приводит к такому виду 1,23423534535345Е21.
конечно же это уже другая цифра. как мне быть?
Amoeba (2008-08-29 21:44:00) [1]Господа, а куда пропал наш супер-глубокоуважаемый АВТОР в больших буквах? Где каскад благодарностей?
antonn (2008-08-29 20:41:00) [2]
> aidyn (29.08.08 12:46)
http://kladovka.net.ru/index.cgi?pid=list&rid=53
> ZiZi (29.08.08 17:16) [7]
> на низкий уровень
понравилось словосочетание, красиво звучит, да? %)
ZiZi (2008-08-29 17:16:00) [3]Старый добрый массив и собственные функции умножения/деления, вычитания/сложения. Низкий уровень программирования - это выход.
> Честно говоря, затрудняюсь придумать пример, в котором действительно
> требовалась бы точность в 20 знаков и более. Как правило,
> числа с плавающей точкой используются в тех или иных численных
> методах, где погрешность САМОГО метода ПРИНЦИПИАЛЬНО не
> позволяет получить 20 и более точных знаков. Это означает,
> что младшие разряды в любом случае будут содержать "мусор",
> хранить который совершенно незачем.
--В принципе поддерживаю, но только если сильно надо - флаг в руки и вперёд на низкий уровень.
Anatoly Podgoretsky (2008-08-29 13:38:00) [4]А у него даже не 20, а 21 знак
Юрий Зотов (2008-08-29 13:10:00) [5]> aidyn (29.08.08 12:46)
> самый большой тип данных в дельфи не позволяет с ними оперировать.
> Точнее позволяет, но отсекает несколько последних цифр и приводит к
> такому виду 1,23423534535345Е21.
В приведенном Вами примере числа содержится 15 значащих цифр, что соответствует типу Double. Но в Delphi это НЕ самый большой тип чисел с плавающей точкой. Самый большой - это Extended и он дает 19-20 значащих цифр. Возможно, этого будет достаточно.
Честно говоря, затрудняюсь придумать пример, в котором действительно требовалась бы точность в 20 знаков и более. Как правило, числа с плавающей точкой используются в тех или иных численных методах, где погрешность САМОГО метода ПРИНЦИПИАЛЬНО не позволяет получить 20 и более точных знаков. Это означает, что младшие разряды в любом случае будут содержать "мусор", хранить который совершенно незачем.
Anatoly Podgoretsky (2008-08-29 13:03:00) [6]> aidyn (29.08.2008 12:46:00) [0]
Нужна внешняя поддержка больших чисел, хватит поддержки 128 бит
aidyn (2008-08-29 13:02:00) [7]
> если целочисленная математика то FGInt,HugeInt или родной
> TBCD (не советую)
> начинайте работать с маленькими по модулю значениями
можно поподробнее пожалуйста
Slym (2008-08-29 12:54:00) [8]aidyn (29.08.08 12:46)
если целочисленная математика то FGInt,HugeInt или родной TBCD (не советую)
Vlad Oshin (2008-08-29 12:53:00) [9]начинайте работать с маленькими по модулю значениями