2016-09-08 30 views
2

我想在C++中使用setprecision。這裏就是我doing-在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在輸出文件

+3

您可以發表[mcve]嗎? – jaggedSpire

+2

您的代碼與您的問題不符。你能否在代碼中顯示「_the input is'0.035',但輸出:'Annual Interest Rate:0.035' then'0.04'_」? –

+0

你們都錯了,代碼是足夠的,@迪特的答案解釋了發生的事情。清晰度可以在第二部分得到改進,但信息是 – sokkyoku

回答

5

一些流操縱/標誌應用於只有一次(例如:setw)打印爲0.06和其他保持有效它們被改變(例如:fixedsetprecision),直到。

我假設在函數的第一個調用中,您使用的是默認格式(不是fixed而不是scientific)和默認精度(6)。

在函數的第二次調用中(我假設您不會在另一個函數中同時更改它),您的格式爲fixed,精度爲2。

+1

@Joker這是正確的答案。 'setprecision(2)'仍然有效 – sokkyoku

+0

@Dieter感謝您的回答,我試着將精度更改爲默認精度,但輸出0.035000而不是0.035。如你所說,它將精度恢復爲'6',但我想顯示'0.035'。 – Joker

+0

那是因爲你也將它設置爲'fixed'。你可以用'outfile.unsetf(ios_base :: fixed)';' – sokkyoku

相關問題