Блог пользователя saurabhkumarfx

Автор saurabhkumarfx, история, 4 года назад, По-английски
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 .

  • Проголосовать: нравится
  • -11
  • Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

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.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    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 .

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      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.