Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 2 / 1
Регистрация: 08.04.2012
Сообщений: 17
1

баг компилятора, или беда с типами данных?

22.09.2013, 16:52. Просмотров 1090. Ответов 5
Метки нет (Все метки)


привет) есть задача, где нужно проверить, равна ли сумма чисел единице... проще простого не правда ли, но вот что у меня получаеться:
значения:
n = 10 количество чисел...

после цикла, sum == 1, а вот проверка if (sum == 1) дает false О_о


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool pSum(){
  double sum = 0;
   try {
        for (int i = 0; i<n; i++)
          sum +=  StrToFloat(Form1->StringGrid1->Cells[i][1]);
   }
  catch (...){
    ShowMessage("Something wrong");
  }
 
if  (sum == 1) return true;
else           return false;
}
то есть получаеться, что 1 не равно 1. юзали и float, double, long double - не меняеться...

придумал вротой метод: sum делать 1 и отнимать все числа.. так вот, последний шаг (когда sum == 0.1 и надо вычесть последнее 0,1), загоняет sum в -6 о_О
знаю, что ошибка наверное детская, но блин, обидно))))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2013, 16:52
Ответы с готовыми решениями:

std::regex : баг на сайте или баг компилятора?
http://en.cppreference.com/w/cpp/regex/regex_match этот код выкидывает throw... Добавлено через...

Баг компилятора или я дурак?
До:https://www.cyberforum.ru/attachment.php?attachmentid=840160&amp;stc=1&amp;d=1496427343...

Мистическая ошибка или баг компилятора?
Есть программа (шахматная), написанная на C++. Больше года все работало корректно, но неожиданно...

Баг компилятора или я чего-то не понимаю?
Столкнулся с некоректной работой мк ATmego328P, хотя в C-шном коде ошибок не видно. В таких случаях...

5
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
22.09.2013, 17:43 2
Как минимум правильно писать
C++
1
if  (sum == 1.) return true;
или
C++
1
return sum == 1.;
0
2 / 2 / 1
Регистрация: 08.04.2012
Сообщений: 17
22.09.2013, 17:48  [ТС] 3
да проверку if я уже потом сделал... но так тоже не работает
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
22.09.2013, 17:50 4
Увы, числа с плавающей точкой не дают абсолютной точности. Так пойдет:
C++
1
return fabs(1.-sum)<0.00000001;
?

Добавлено через 56 секунд
После 1 нужно ставить точку.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30857 / 20180 / 7873
Регистрация: 22.10.2011
Сообщений: 35,038
Записей в блоге: 6
22.09.2013, 17:51 5
Лучший ответ Сообщение было отмечено как решение

Решение

в модуле Math есть функция SameValue для этого...
3
2 / 2 / 1
Регистрация: 08.04.2012
Сообщений: 17
22.09.2013, 18:01  [ТС] 6
да, вот так пошло
C++
1
return fabs(1.-sum)<0.00000001;
как то странно вообше про float было... 1 ... 0,9 ... 0,8 ... 0,7 ... 0,599999 =))) при том что отнимал всегда только 0,1.. ну, уже не важно, буду гуглить на эту тему)
спасибо)

Добавлено через 48 секунд
Цитата Сообщение от UI Посмотреть сообщение
в модуле Math есть функция SameValue для этого...
тоже довольно интересно, и точность есть.. спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2013, 18:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Баг компилятора? Или я чего то не догоняю?
Компилил в 2008 студии. Вопрос: ПОЧЕМУ ЭТОТ КОД КОМПИЛИРУЕТСЯ? class Bee { private: ...

Баг компилятора????????
Почему первая программа дает 6, а вторая 11? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; int...

Баг компилятора?
Набросал вот такой код: // &lt;@r!er&gt; &lt;wtf&gt; &lt;26.05.2012&gt; #include &lt;iostream&gt; #include &lt;windows.h&gt;...

Delphi xe4 баг компилятора
В общем, при вводе стандартных объектов вместо процедур, функций и переменных(а-ля Edit1.text)...


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

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

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