+ 1

What is the difference?

#include <iostream> using namespace std; int main() { int a = 30; int b = 12; float c = a / b; cout << c; return 0; } The output is 2 But if I exchange one(or just two) of the data types of a and b into float, I get an output 2.5. What is the difference? I mean that I have already declared c is an float, why the data type of a and b change the result. Thanks.

4th Apr 2017, 10:45 AM
張小小
張小小 - avatar
6 odpowiedzi
+ 6
Result of a/b results integer value because a and b are defined an integer. To get float value as result of a/b, you can typecast the result to float as- float c=(float)(a/b);
4th Apr 2017, 11:14 AM
Sachin Artani
Sachin Artani - avatar
+ 6
Sorry, mistakenly I put extra parenthesis, You have to typecast atleast one integer variable as float to get the floating pt number. eg. float c=(float)a/b;
4th Apr 2017, 11:23 AM
Sachin Artani
Sachin Artani - avatar
+ 2
When you divide two integers, you are performing integer division, so only the integer part of the calculation is retained, and the decimal part is discarded.
4th Apr 2017, 10:52 AM
Hassie
Hassie - avatar
+ 1
I don't know C++, but I do know that in some languages when the / operator takes two ints as arguments, it does an integer division (that is, returns an integer). For example, if you do float c=a/(float)b it returns the expected result.
4th Apr 2017, 10:53 AM
Luca Garrera
0
@Sachin If you do that, you are still making an integer division because you are passing two integers to the / operator, so it doesn't change the output.
4th Apr 2017, 11:19 AM
Luca Garrera
0
Thank you for all the answers. I got it.☺
4th Apr 2017, 11:20 AM
張小小
張小小 - avatar