std :: ofstream精确解决方法

时间:2014-05-29 07:46:05

标签: c++ precision ofstream

int main(int argc, char *argv[])
{
    std::deque<float> queue;
    queue.push_back(1.23456789);
    queue.push_back(2.3456789);
    queue.push_back(3.456789);
    queue.push_back(4.56789);
    queue.push_back(5.6789);

    std::ofstream file ("out.txt");
    if (file.is_open())
    {        
        file.precision(12);        
        std::copy(queue.begin(), queue.end(), std::ostream_iterator<float>(file, ","));
    }
    file.close();

    return 0;
}

我正在运行上面的代码,当我打开 out.txt 时,我得到了以下内容:

1.23456788063;2.3456788063;3.45678901672;4.56789016724;5.67889976501;

我在期待:

1.23456789;2.3456789;3.456789;4.56789;5.6789;

或至少:

1.23456789000;2.3456789000;3.45678900000;4.56789000000;5.67890000000;

我在这里做错了什么?

[编辑]

好吧,这是浮点数的本质,我接受它,我可以忍受它。但是,如果我想得到预期的结果,我该怎么办?什么是最好的解决方法?

[编辑]

0 个答案:

没有答案