saurabhkumarfx's blog

By saurabhkumarfx, history, 5 years ago, In English
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 .

  • Vote: I like it
  • -11
  • Vote: I do not like it

| Write comment?
»
5 years ago, # |
  Vote: I like it +3 Vote: I do not like it

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.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    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 .

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      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.