C ++ Cout проблема с плавающей запятой - PullRequest
2 голосов
/ 11 сентября 2009
#include <iostream>
using namespace std;
int main()
{
        float s;
        s = 10 / 3;
        cout << s << endl;
        cout.precision(4);
        cout << s << endl;
        return 0;

}

Почему на выходе не отображается 3.333, а только 3 ??

Ответы [ 3 ]

6 голосов
/ 11 сентября 2009

потому что вы делаете целочисленное деление с s = 10 / 3

Попробуйте

s = 10.0f / 3.0f
3 голосов
/ 11 сентября 2009

Правильный способ сделать постоянное деление на числа с плавающей запятой:

s = 10.f / 3.f; // one of the operands must be a float

Без суффикса f вы делите double, выдавая предупреждение (от float до double).

Вы также можете разыграть один из операндов:

s = static_cast<float>(10) / 3; // use static_cast, not C-style casts

В результате правильное деление.

2 голосов
/ 11 сентября 2009

10/3 - целочисленное деление. Вам нужно использовать 10.0 / 3 или (float) 10/3 или 10 / 3.0 и т. Д.

...