Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.05;
Скачать: CL | DM;

Вниз

работа с 20-значными числами   Найти похожие ветки 

 
aidyn   (2008-08-29 12:46) [0]

Возникла необходимость проводить операции с 20-значными(а то и больше) числами. столкнулся с проблемой. что даже самый большой тип данных в дельфи не позволяет с ними оперировать. Точнее позволяет, но отсекает несколько последних цифр и приводит к такому виду 1,23423534535345Е21.
конечно же это уже другая цифра. как мне быть?


 
Vlad Oshin ©   (2008-08-29 12:53) [1]

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


 
Slym ©   (2008-08-29 12:54) [2]

aidyn   (29.08.08 12:46)
если целочисленная математика то FGInt,HugeInt или родной TBCD (не советую)


 
aidyn   (2008-08-29 13:02) [3]


> если целочисленная математика то FGInt,HugeInt или родной
> TBCD (не советую)



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


можно поподробнее пожалуйста


 
Anatoly Podgoretsky ©   (2008-08-29 13:03) [4]

> aidyn  (29.08.2008 12:46:00)  [0]

Нужна внешняя поддержка больших чисел, хватит поддержки 128 бит


 
Юрий Зотов ©   (2008-08-29 13:10) [5]

> aidyn   (29.08.08 12:46)  

> самый большой тип данных в дельфи не позволяет с ними оперировать.
> Точнее позволяет, но отсекает несколько последних цифр и приводит к
> такому виду 1,23423534535345Е21.

В приведенном Вами примере числа содержится 15 значащих цифр, что соответствует типу Double. Но в Delphi это НЕ самый большой тип чисел с плавающей точкой. Самый большой - это Extended и он дает 19-20 значащих цифр. Возможно, этого будет достаточно.

Честно говоря, затрудняюсь придумать пример, в котором действительно требовалась бы точность в 20 знаков и более. Как правило, числа с плавающей точкой используются в тех или иных численных методах, где погрешность САМОГО метода ПРИНЦИПИАЛЬНО не позволяет получить 20 и более точных знаков. Это означает, что младшие разряды в любом случае будут содержать "мусор", хранить который совершенно незачем.


 
Anatoly Podgoretsky ©   (2008-08-29 13:38) [6]

А у него даже не 20, а 21 знак


 
ZiZi   (2008-08-29 17:16) [7]

Старый добрый массив и собственные функции умножения/деления, вычитания/сложения. Низкий уровень программирования - это выход.

> Честно говоря, затрудняюсь придумать пример, в котором действительно
> требовалась бы точность в 20 знаков и более. Как правило,
>  числа с плавающей точкой используются в тех или иных численных
> методах, где погрешность САМОГО метода ПРИНЦИПИАЛЬНО не
> позволяет получить 20 и более точных знаков. Это означает,
>  что младшие разряды в любом случае будут содержать "мусор",
>  хранить который совершенно незачем.

--В принципе поддерживаю, но только если сильно надо - флаг в руки и вперёд на низкий уровень.


 
antonn ©   (2008-08-29 20:41) [8]


> aidyn   (29.08.08 12:46)

http://kladovka.net.ru/index.cgi?pid=list&rid=53


> ZiZi   (29.08.08 17:16) [7]
> на низкий уровень

понравилось словосочетание, красиво звучит, да? %)


 
Amoeba ©   (2008-08-29 21:44) [9]

Господа, а куда пропал наш супер-глубокоуважаемый АВТОР в больших буквах? Где каскад благодарностей?



Страницы: 1 вся ветка

Текущий архив: 2008.10.05;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.005 c
15-1218265588
Пробегал2....
2008-08-09 11:06
2008.10.05
Учебные курсы от intuit.ru


2-1219337336
Terasbetoni
2008-08-21 20:48
2008.10.05
Если вызвать _var.Destroy, то разве _var не станет равным nil ?


2-1219906656
snake-as
2008-08-28 10:57
2008.10.05
Как сделать, чобы при нажатии кнопки на каждом компоненте Edit


3-1207566350
oskar1985
2008-04-07 15:05
2008.10.05
Локальная база


2-1219495279
Drone
2008-08-23 16:41
2008.10.05
Вопрос относительно объектов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский