Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Погрешности в определении 0 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Элементарные задачки на контрольную. Требуется помощь в решении http://www.cyberforum.ru/cpp-beginners/thread3166.html
Есть несколько несложных задач из контрольной работы по языку С первого курса, которые я не совсем знаю как делать. 1)Посчитать кол-во единиц в двоичной записи целого числа 2)Функция проверяет...
C++ Как преобразовать время в строку и обратно Помогите с алгоритмом: SYSTEMTIME(или FileTime) в строку с учетом региональных установок, а потом на основе данной строки обратно получить SYSTEMTIME(или FileTime). Нормальных классов и... http://www.cyberforum.ru/cpp-beginners/thread3162.html
C++ Поменять местами старший и младший полубайты
Как поменять старший и младший полубайт беззнакового короткого целого местами? конечно же используя битовые операции.. напишите прогу плз
C++ Помогите в создании простейшей программы сложения
я создаю простейшую прогу сложения,компилятор не находит ошибок,через run project сморю намана debug project ответ не выводит окно закрывается и почему программа выходит через dos
C++ Как отформатировать данные перед их использованием? http://www.cyberforum.ru/cpp-beginners/thread3129.html
Например, мне надо выдать данные в hex формате, а они у меня в виде char или byte -что для этого нужно сделать?
C++ Определитель матрицы методом Гаусса Киньте плиз код на С++, которая ищет определитель матрицы методом Гауса! Очень нужно. Буду благодарен) подробнее

Показать сообщение отдельно
Alex Skye
Сообщений: n/a

Погрешности в определении 0 - C++

24.10.2007, 11:36. Просмотров 1117. Ответов 1
Метки (Все метки)

Есть вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
double Hphi(double x)
{
  if(x==0) return 111;
  else return 222;
}
 
int main(int argc, char *argv[])
{
    double x, H;
    for (x = -0.2; x <= 0.2; x=x+0.1){
          H = Hphi(x);
          printf("%10f, %10f\n", x, H);
    };
    
    getch();
    return 0;
}
А вот результат его работы:
-0.300000, 222.000000
-0.200000, 222.000000
-0.100000, 222.000000
0.000000, 222.000000
0.100000, 222.000000
0.200000, 222.000000.

Если же задавать цикл от -0,2 до 0,2 то все нормально:
-0.200000, 222.000000
-0.100000, 222.000000
0.000000, 111.000000
0.100000, 222.000000
0.200000, 222.000000

Очевидно проблема в погрешности определения 0, но почему она имеет место не пойму. Подскажите пожалуйста, если кто знает.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru