2014-03-30 27 views
1

我需要以科學計數法顯示一個元素。 cout位於幾個循環內,在設置了科學記數法之後,它會影響程序中的整個cout。 我該如何切換回常規符號。如何從科學計數法中恢復

這是COUT行:

cout << "Firing '" << fir << "' Time: " << time << " sec\nCorresponding altitude: " << scientific << alt << endl; 

只有變量ALT應在科學記數法顯示。

我加了cout.precision(2);和cout < <固定;在上面的行之後,但它也影響程序中的其他cout。

我感謝您的幫助。

+0

你能不能定義cout.precision(2)在** cout行之前**然後輸出該行的一部分,然後c提高精度cout.precision(10)並輸出其餘的值。 – user1767754

回答

0

嘗試是這樣的:

http://www.cplusplus.com/reference/ios/scientific/

cout << "Firing '" << fir << "' Time: " << time << " sec\nCorresponding altitude: "; 
cout << std::scientific << alt << endl; 
std::cout << std::defaultfloat; // C++ 11 

......或者......

std::cout.unsetf (std::ios::floatfield); // C++ 98 

參見:

c++ std::stream double values no scientific and no fixed count of decimals

http://www.cs.duke.edu/courses/cps149s/fall99/resources/n2.html

​​

+0

簡單而完美。感謝名單 – SHR

0

那麼,在設置精度之前,您可以將它與cout.precision()一起存儲在一個變量中。完成將精度設置爲2後,請將其重置回使用變量的位置。即假設「精度」是你的變量的cout.precision(precision)

例如:

輸出:

1.2

1.234

#include <iostream> 

using namespace std; 

int precision; 
float number = 1.234; 

int main(void) 
{ 
    precision = cout.precision(); 
    cout.precision(2); 
    cout << number << endl; 
    cout.precision(precision); 
    cout << number << endl; 
} 
+0

感謝您的詳細示例。 – SHR