Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с 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]

начинайте работать с маленькими по модулю значениями


Наверх

Титульная страница Поиск, карта сайта Написать письмо