Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Potap Potapich
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 6
1

Ошибка при вычислении шага сетки вещественных чисел

02.04.2015, 00:24. Просмотров 333. Ответов 3
Метки нет (Все метки)

Доброго времени суток!
Проблема возникает при нахождении шага сетки для числа "a". т.е. такого минимального "х", что "а+х != а".
Написал код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main(){
    double x, b, a;
    for (x = scanf("%le", &a); a + x != a; )
    {
        b = x;
        x /= 2;
        printf("%le\n", b);
        printf("%le\n", a + x);
        printf("%le\n\n", a + b);
 
    }
 
    printf("%le\n", b);
    printf("%le\n", a + x);
    printf("%le\n", a + b);
    return 0;
}
Ошибка в том, что программа находит необходимое число b но не останавливается и продолжает делить х на два. Хотя я вроде указал условие, когда программа должна остановиться. Если кто знает в чем ошибка, прошу объяснить. Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2015, 00:24
Ответы с готовыми решениями:

Ошибка при вычислении функции
здравствуйте Программисты.... можете мне помочь, вот я написал программу, и она у меня выдаёт одну...

Ошибка при вычислении log(x)
Операционная система GNU/Linux, дистрибутив Kubuntu 9.10, компилятор gcc. Наверное, я где-то...

Ошибка при вычислении произведения
помогите, не могу найти ошибку.Не считает произведение S при С&lt;0 #include&lt;stdio.h&gt;...

Ошибка при вычислении выражения
Даны натуральные числа N и M. Вычислить F=M!+N!/(N+M)! Программа должна работать при любых...

Ошибка при вычислении
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { double x,y,z; x =...

3
HighPredator
5693 / 2014 / 723
Регистрация: 10.12.2010
Сообщений: 5,787
Записей в блоге: 3
02.04.2015, 08:51 2
Цитата Сообщение от Potap Potapich Посмотреть сообщение
минимального "х", что "а+х != а"
Можете вот это прояснить, а то оно мне мозг рвет?
0
Potap Potapich
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 6
03.04.2015, 01:33  [ТС] 3
Цитата Сообщение от HighPredator Посмотреть сообщение
Можете вот это прояснить, а то оно мне мозг рвет?

для любого числа А имеются настолько маленькие вещественные числа Б , что сумма А + Б = А.
это связанно с неточностью представления вещественных чисел в памяти компьютера.
задача состояла в том, что надо было определить инфинум из чисел В, где сумма А+В не равнялась А.
вроде бы уже разобрался с проблемой. оказалось, что для суммы а+х в процессере выделялось не 8 байт( для double) а 10 байт, а затем программа не сохраняла все обратно для восьми байт. и результат получался для 10 байт, значение ответа которого конечно намного меньше чем для 8. вот при перобразовании ответа в тип double и получался тот самый бред.
0
HighPredator
5693 / 2014 / 723
Регистрация: 10.12.2010
Сообщений: 5,787
Записей в блоге: 3
03.04.2015, 08:17 4
Цитата Сообщение от Potap Potapich Посмотреть сообщение
оказалось, что для суммы а+х в процессере выделялось не 8 байт( для double) а 10 байт
Можете показать как (или откуда) вы это установили?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2015, 08:17

Ошибка при вычислении
clear all close all clc Ea = 0.15; Eb = 0.15; Ee = 0.1; N = 70;

Ошибка при вычислении
Добрый день, подскажите есть ли функция в аксеес еслиошибка как у экселя?

Не могу понять в чем ошибка при вычислении в Базе данных при составлении Запроса
Всем привет! Нужна ваша помощь! Недавно начал осваивать Access и не знаю всех тонкостей. На...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru