4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
|
|
1 | |
Вещественные числа с плавающей точкой, точность вычислений07.06.2012, 12:31. Показов 18731. Ответов 70
Метки нет Все метки)
(
Работаю над проектом, требующим большую точность вычисления вещественных чисел.
Решила использовать long double в надежде получить точность побольше. Столкнулась с тем, что C++ Builder просто отказывается давать желаемую точность. Точность необходима до 10^20. То есть до 20 числа после запятой. Подскажите пожалуйста как решить данную проблему.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
07.06.2012, 12:31 | |
Ответы с готовыми решениями:
70
Точность числа с плавающей точкой Максимальная точность для чисел с плавающей точкой Представить вещественные числа в четырёхбайтовой ячейке памяти в формате с плавающей точкой В текстовом файле записаны вещественные числа с плавающей точкой. Преобразовать файл, заменив каждое число, округленным |
Модератор
3352 / 2127 / 349
Регистрация: 13.01.2012
Сообщений: 8,290
|
|
07.06.2012, 12:50 | 2 |
видимо придется реализовать свой класс чисел с произвольным количеством знаков после запятой или взять чей-нибудь. а вообще - поработать с предметной областью: упростить, привести, сделать с расчетами что-нибудь снижающее требования к точности. люди вообще раньше атомные бомбы на линейках рассчитывали)
1
|
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
|
|
07.06.2012, 14:41 [ТС] | 3 |
vxg, видимо придется писать свой класс или все-таки переписывать на Java =)
0
|
Модератор
3352 / 2127 / 349
Регистрация: 13.01.2012
Сообщений: 8,290
|
|
07.06.2012, 15:21 | 4 |
для чего такая точность если это не гос тайна?
0
|
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
|
|
07.06.2012, 16:39 [ТС] | 5 |
Вычисление старшего показателя Ляпунова, с помощью нейросетевого алгоритма.
От так...
0
|
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
|
||||||
07.06.2012, 18:06 | 6 | |||||
1
|
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
|
|
07.06.2012, 21:05 [ТС] | 8 |
Я абсолютно ничего не вывожу, я просто должна найти значение логарифма разности двух чисел, а эти два числа имеют очень маленькую разность, около 1e-20. Сам алгоритм основан на том, что два числа должны иметь очень маленькое расхождение. Поэтому проблема не в считывании и не выводе.
0
|
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
|
||||||
07.06.2012, 21:32 [ТС] | 10 | |||||
Если вы конечно сможете что-то понять =)
0
|
![]() ![]() |
|
07.06.2012, 22:16 | 12 |
Код
$ gcc -xc /dev/null -dM -E | grep LDBL ... #define __LDBL_EPSILON__ 1.08420217248550443401e-19L ...
0
|
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
|
|
07.06.2012, 22:42 [ТС] | 14 |
Evg, вот именно =(
Avazart, там в формуле где log(fabs(x1-x2)) под логарифмом появляется недопустимый ноль, поэтому проблема в разности чисел, она настолько мала, что x1-x2=0, а в самом деле там должно быть 1*10^-18
0
|
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
|
|
08.06.2012, 00:22 [ТС] | 18 |
Avazart, не забывай о том что я про С++Builder, на Visual все нормально, все работает. А вот в Билдере это все-таки проблема.
и да,Evg, ты прав. Фишка в разнице мало чем отличающихся чисел.
0
|
![]() ![]() |
||||||
08.06.2012, 09:11 | 20 | |||||
Этого быть не может, т.к. точность вычислений - это фича процессора, а не компилятора.
Единственную причину таких различий я вижу в том, что используется какой-то устаревший borland'овский компилятор, в котором не было полноценной поддержки long double и long double был эквивалентен double'у (как это имеет место быть на многих старых компиляторах и не только под intel) Проще всего это выяснить, посмотрев, что напечатает код:
Что именно у тебя работает?
0
|
08.06.2012, 09:11 | |
Помогаю со студенческими работами здесь
20
Преобразование чисел с плавающей точкой в числа с фиксированной точкой Точность вычислений в double (Обрезание числа)
Числа с плавающей точкой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |