Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Kastaneda
Jesus loves me
Эксперт С++
4763 / 2966 / 342
Регистрация: 12.12.2009
Сообщений: 7,531
Записей в блоге: 2
Завершенные тесты: 1
#1

Нереальная разница при использовании int и double

15.12.2010, 17:37. Просмотров 1112. Ответов 2
Метки нет (Все метки)

Писал код в параллельную ветку, случайно наткнулся на такое, вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<cmath>
int main(){
    const int array[10]={12,32,-123,235,-456,2134,-123,56,-132,756};
    int count=0;
    double geom_mean=1.;
    for(int i=0;i<10;i++)
        if(array[i]>=0){
            geom_mean*=array[i];
            ++count;
        }    
        geom_mean=pow(geom_mean,1./(double)count);    
        std::cout<<"Geometric mean : "<<geom_mean<<std::endl;
    return 0;    
}
находит среднее геометрическое, ну не важно, речь не об этом. В общем если geom_mean типа double, то результат вычислений 141.868, а если сделать типа int то результат 30 )
Найти объяснение этому так и не смог. Может кто-нибудь объяснит?

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 17:37
Ответы с готовыми решениями:

Ошибка при считывании double в переменную int
Добрый день.Столкнулся с такой проблемой Если мы попробуем ввести в переменную...

Борьба с погрешностью при сравнивании double с int
В моей программе происходит много действий с вещественными числами, а потом...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения...

Неверный результат при преобразования типов данных static_cast<int>(double)
Доброго времени суток, уважаемые программисты! Перейду сразу к сути проблемы:...

В чем разница между long int и short int
Извините если вопрос нубский, но я ни как не могу понять смысл long int и short...

2
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
15.12.2010, 17:48 #2
Все нормально получается:
При таком массиве geom_mean в конце цикла становится равным 8152734965760.
Для типа double такое число нормально. А для типа int начинается переполнение еще при незаконченном цикле и в результате результат в конце получается неправильный.
1
Kastaneda
Jesus loves me
Эксперт С++
4763 / 2966 / 342
Регистрация: 12.12.2009
Сообщений: 7,531
Записей в блоге: 2
Завершенные тесты: 1
15.12.2010, 17:50  [ТС] #3
Точно, я не учел, что результат такой большой получится, массив то "с закрытыми глазами" забивал)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2010, 17:50

в чем разница между int a и int *a?
люди подскажите начинающему... чем переменная отличается от указателя?...

в чем разница между int(a) и (int)a?
Собственно в этом и вопрос.

Double, int , long double
Как вычислить диапазоны типов вручную указанных в название темы?


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

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

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