从分割中移除精度

时间:2012-02-21 19:45:52

标签: c++

基本上,如果我写这样的东西 -

float a = 0;
a = (float) 1/5;
a += (float) 1/9;
a += (float) 1/100;

逗号后会自动将精度降低到2位数,但逗号后需要5位数,是否可以创建,所以显示5位数?使用setprecision(5),只需在逗号后显示00000。

输入文件中的所有数据都很好。

4 个答案:

答案 0 :(得分:4)

setprecision不要修改值。使用ofstream

时,它只显示所需的精度

答案 1 :(得分:1)

你必须像这样使用setprecision:

cout << setprecision (5) << a << endl;

http://www.cplusplus.com/reference/iostream/manipulators/setprecision/

编辑:我暂时没有使用过C ++,但是你可能会遇到一些问题,因为你正在进行integer除法,然后将结果转换为{{1} }}。尝试这样做而不是强制float分裂:

float

答案 2 :(得分:0)

答案 3 :(得分:0)

这将在逗号之后给出5位数字:

#include <iostream>
#include <iomanip>

using namespace std;

int main(int argi, char** argc) {
       float a = 0;
       a = (float) 1/5;
        a += (float) 1/9;
        a += (float) 1/100;

        cout << setprecision(5) << a << endl;
        return 0;
}

如果你想在输出上总是有5位数,可以使用:

cout << setprecision(5) << setfill ('0')<< setw(5) << a << endl;