在C ++中使用setprecision

时间:2016-09-08 15:55:35

标签: c++

我正在尝试在c ++中使用setprecision。这就是我在做什么 -

我有一个输出文件,我正在编写结果 -

我第一次调用函数会正确打印interest_rate。 说,我用interest_rate=0.035调用函数,所以我得到以下输出 -

Annual Interest Rate: 0.035

但是下次如果我使用相同interest_rate i.e. 0.035的函数调用,我会得到以下输出 -

Annual Interest Rate: 0.04

我想在两种情况下输出相同的输出,为什么会发生这种情况?

编辑: - 这是代码 -

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>

这是输入文件: - 的 input.txt中

3
1000.00
0.035
120.00
5000.00
0.04
165.00
200000.00
0.055
2250.00

这是我得到的输出文件:

Annual Interest Rate: 0.035
1         1000.00   
2         1000.00   
3         1000.00   
4         1000.00   
Annual Interest Rate: 0.04
1         5000.00   
2         5000.00   
3         5000.00   
4         5000.00   
Annual Interest Rate: 0.06
1         200000.00 
2         200000.00 
3         200000.00 
4         200000.00 

注意输入文件中的0.055如何在输出文件中打印为0.06

1 个答案:

答案 0 :(得分:4)

某些流操作符/标志仅应用一次(例如:setw),其他流操作符/标志在更改之前保持有效(例如:fixedsetprecision)。

我假设,在函数的第一次调用中,您使用的是默认格式(不是fixed而不是scientific)和流的默认精度(6)。

在函数的第二次调用中(我假设您不在另一个函数中同时更改它),您的格式为fixed,精度为2。