2013-04-29 2343 views
15

論壇中已經討論過類似的話題。但我在下面的代碼一些不同的問題:在C++中顯示小數點後的兩位數

double total; 
cin>>total 
cout<<fixed<<setprecision(2)<<total; 

如果我給輸入爲100.00,然後程序打印僅有100而不是100.00

我如何打印100.00

+6

真的嗎?它在我的系統上給出了100.00(好吧,它給出了一個錯誤的分號,但我修正後,它可以像我期望的那樣工作)。也許你應該發佈你一直在測試的ACTUAL代碼。 – 2013-04-29 13:39:08

+0

你是否要求修復你的代碼?或者你是否想要以任何方式打印帶有兩位小數的數字? 你應該發佈你用來運行你的代碼的編譯器選項(或者至少是編譯器),這將是非常有用的發現問題;) – Bengalaa 2013-12-27 15:30:41

回答

1

這可能與setiosflags(ios :: showpoint)。

+0

'showpoint'在這裏不應該是必須的,因爲他已經請求了2個小數點後的數字。他的代碼是正確的,並應該給他說他想要的輸出。 – 2013-04-29 14:19:22

50
cout << fixed << setprecision(2) << total; 

setprecision指定最小精度。所以

cout << setprecision (2) << 1.2; 

將打印1.2

fixed說,會有的小數位數的固定數量在小數點後

cout << setprecision (2) << fixed << 1.2; 

將打印1.20

+1

另外,'setprecision'的含義取決於浮點輸出是如何格式化的:'fixed','scientific'或'floatfmt()'(默認值)。 – 2013-04-29 14:20:54

+0

此係統/實施是否依賴?許多人報告顯示點不應該是必要的......這也是我的系統的情況。 – Antonio 2014-08-11 12:12:09

+0

@JamesKanze ['defaulfloat'](http://en.cppreference.com/w/cpp/io/manip/fixed)被添加到C++ 11 – nodakai 2016-04-22 15:34:58

2

最簡單的方式做這是使用cstdio的printf。其實,我很驚訝,有人提到printf!無論如何,你需要包括圖書館,像這樣......

#include<cstdio> 

int main() { 
    double total; 
    cin>>total; 
    printf("%.2f\n", total); 
} 

這將打印的價值「總」 (這就是%,然後,total一樣) 2浮動點(那是什麼.2f確實)。而\n底,是線剛剛結束,這可與弗吉尼亞的法官在線編譯器選項,那就是:

g++ -lm -lcrypt -O2 -pipe -DONLINE_JUDGE filename.cpp 

您嘗試運行不會與此編譯器選項運行代碼.. 。

+0

這可能是有用的閱讀http://stackoverflow.com/問題/ 2872543/printf-vs -cout-in-c: printf仍然可以在C++中使用,但是在特殊情況下。 – Antonio 2014-08-11 12:17:18

+1

大聲笑,如何UVa判斷,-lcrypt或任何其他編譯器選項,甚至遠程相關的問題? – 2016-10-14 02:51:57

+0

uhh,3年前我自己回答XD,當時,當我發現這個問題時,我開始使用競爭性編程,所以我認爲我的答案中的這個「額外信息」可以幫助那些開始競爭的人編程以及:) – Bengalaa 2016-10-14 20:05:18

2

,能夠在C打印15十進制數++使用以下:

#include <iomanip> 
#include <iostream> 

cout << fixed << setprecision(15) << " The Real_Pi is: " << real_pi << endl; 
cout << fixed << setprecision(15) << " My Result_Pi is: " << my_pi << endl; 
cout << fixed << setprecision(15) << " Processing error is: " << Error_of_Computing << endl; 
cout << fixed << setprecision(15) << " Processing time is: " << End_Time-Start_Time << endl; 
_getch(); 

return 0; 
+0

_「include ... include」_什麼? – MickyD 2015-03-21 00:38:54

1

使用頭文件stdio.h可以很容易地做到這一點照常如c。在使用%.2lf(在%說明符後面設置特定數字)之前,使用printf()。

它只是在小數點後printf特定數字。

#include <stdio.h> 
#include <iostream> 
using namespace std; 
int main() 
{ 
    double total=100; 
    printf("%.2lf",total);//this prints 100.00 like as C 
} 
相關問題