2016-12-24 3 views
-2

я немного застрял с этой проблемой:C++ двойной косяк быть равно два Int деления

int a = 5, b = 2; 
double c = a/b; 
cout << c; 

Это выходы:

2 

Почему?

я могу передать это путем с помощью:

double aa = a, 
bb = b; 
c = aa/bb; 

Этот выход:

2.5 

Помощь! :(

+0

Подсказка: C++, имеет различные виды разделения. Тип разделения, выполняемый в любом заданном контексте, зависит от типов двух операндов: a и b в этом случае. – Waxrat

+0

Он выводит 2, потому что b является целым числом. Математика выполняется как целое число, а затем преобразуется в двойное. – drescherjm

ответ

2

Вы должны по крайней мере, бросить одну из целых чисел с двойной:

double c = a/(double)b; 
+1

лучше использовать стилирование в стиле C++ – artm

+0

Уже есть ответ Сержа Баллесты на стилистику C++. Хотя это выглядит намного легче для начинающих, что является лучшей практикой. – Inconnu

3

В языке C++, любая арифметическая операция между двумя целыми числами возвращает значение INT Иначе говоря, на целочисленное деление. является разделение евклидово. И только тогда целое значение отливают к двойному.

Если вы хотите двойную операцию, вы должны заставить разделение работать на двойных значений, либо литьем один операнд в два раза, или путем умножения на 1.0, который является двойным константа:

double c = 1.0 * a/b; 

или

double c = static_cast<double>(a)/b; 
Смежные вопросы