int main()
{
int t;
cin>>t;
int a,b,c;
cin>>a>>b>>c;
double tmp=a+b;
tmp=tmp/2;
cout<<tmp<<"!";
}
input is : 1 232444 123233 232434 why it is giving wrong answer:177838; why it is rounding off the value .
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
4 | atcoder_official | 161 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
int main()
{
int t;
cin>>t;
int a,b,c;
cin>>a>>b>>c;
double tmp=a+b;
tmp=tmp/2;
cout<<tmp<<"!";
}
input is : 1 232444 123233 232434 why it is giving wrong answer:177838; why it is rounding off the value .
Name |
---|
Double type has a precision value predefined, and since your value of temp exceeded that precision amount the output was rounded up (But don't worry in the computations you don't lose the 0.5)
If you wanna set your own precision value check the "iomanip" library, it has 2 functions "fixed" and "setprecision" that can accomplish that.
so why it is creating problem for only larger values of "a" and "b". If we set a=2 and b=3 then it is printing correct .
You should read about how precision is interpreted.
For example 1.5 requires a fixed precision of 1 but a precision of 2(to be printed without rounding)
Similarly 234.0 requires a fixed precision of 0 but a precision of 3.