long double и floating point error

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: long double и floating point error

Re: long double и floating point error

Romeo » 23 ноя 2007, 11:47

Думаю, здесь мы просто упираемся в особенности машиного предстваления чисел и что ли сделать с этим не получится простыми методами. Если long double не поможет, то придётся изобретать что-то более сложное. Например свой тип. Могу предложить подход когда число будет снабжено дополнительной long long пременной, которая будет хранить масштаб мантисы. Программа должна анализировать значение числа, и если оно слишком близко к нулю, то умножать его 10 в n-й степени, а в переменную long long помещать число n. Это набросок, попрошу не придираться к мелочам :)

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

long double и floating point error

ilyagoo » 22 окт 2007, 17:24

доброго времени суток, господа. прощу помочь вот в каком вопросе:
реализую Метод Наименьших Квадратов на си. это работа с матрицами, элементами которых являются рациональные числа. обрабатывается большое количество чисел (порядка пары тысяч). при использовании функции pow() возникает floating point error. т.к. числа рациональные, а я имею дело с их произведениями, то получаю числа близкие к 0. почему-то не пашет long double, хотя и его я думаю не очень-то хватит. как бы вывернуться из этой западни? пишу под вынь, юзаю borland c 5.5 (консоль). в итоге это всё будет перекинуто в builder 6, но надо для начала избавиться от этих ошибок. пожалуйста, если знаете пути решения, выручайте.
заранее спасибо всем ответившим.

Вернуться к началу