2014-01-15 88 views
1

在C語言中,我們可以這樣寫;如何在C++中寫入小數點後的2位數字?

printf("%.2f", number); 

我該如何在C++中做到這一點?

std::cout << "The number is " << number; 
+4

http://en.cppreference.com/w/cpp/io/manip – chris

+0

[檢查此示例](http://www.cplusplus.com/reference/iomanip/setprecision/)。 –

+1

應該是重複的... –

回答

5

您需要使用iomanip的東西,比如有:

#include <iostream> 
#include <iomanip> 

int main() { 
    double pi = 3.141592653589; 
    std::cout << std::fixed << std::setprecision(2) << pi << '\n'; 
    return 0; 
} 

,輸出:

3.14 

如果要本地化的更改(包括fixed的影響, setprecision永久更改流),您可以事先保存標誌和精度,然後恢復它們:

#include <iostream> 
#include <iomanip> 

int main() { 
    double pi = 3.141592653589; 

    std::cout << pi << '\n'; 

    // Save flags/precision. 
    std::ios_base::fmtflags oldflags = std::cout.flags(); 
    std::streamsize oldprecision = std::cout.precision(); 

    std::cout << std::fixed << std::setprecision(2) << pi << '\n'; 
    std::cout << pi << '\n'; 

    // Restore flags/precision. 
    std::cout.flags (oldflags); 
    std::cout.precision (oldprecision); 

    std::cout << pi << '\n'; 

    return 0; 
} 

的輸出是:

3.14159 
3.14 
3.14 
3.14159 

表示以前的行爲正在恢復。

+0

感謝您對這個答案 – gkhncns

+0

有一點需要注意:'的std :: setprecision(2)改變''的的std :: cout'狀態,因此它會影響以後的任何浮點您打印的值。 –

+0

@凱蒂,好點。雖然它可能不一定適用於這個問題,但我會提及它並提供解決方法。 – paxdiablo

相關問題