2009-10-18 30 views
1

下面的代碼顯示浮點數科學記數法:如何顯示在C++中將尾數設置爲零的浮點數?

float foo = 1.0; 
::cout::setf(::std::ios::scientific); 
::std::cout << foo; 

它產生這樣的輸出:

1.000000e-000 

我想什麼做的是在一個特定的符號顯示浮點數其類似於科學記數法,但尾數設置爲零。與上述相同的浮點數,它會產生:

0.100000e+001 

在C,我相信這將是這樣寫的:

printf("%.6E", foo); 

更新:嗯,其實我也不知道如何在C中做到這一點。 Update2:使用iostream格式的示例不正確。我根據邁克爾伯爾的評論對其進行了修改。

+0

printf(「%。0f」,foo); – aviraldg 2009-10-18 15:53:53

+0

謝謝,但我真的想知道如何做到這一點,而不使用printf – Boule 2009-10-18 16:02:03

+7

你都錯了。 * * .6E和%.0f都不會使printf顯示所需格式的數字。 – 2009-10-18 16:12:57

回答

2

如果你想用ostreams做到這一點,我認爲你需要使用「方面」。這個鮮爲人知的C++部分可以讓你控制格式化,但不管你喜歡什麼。

這裏是num_put的描述,這是格式化的方式的數字你不喜歡:http://www.cplusplus.com/reference/std/locale/num_put/

你需要與包含刻面區域設置「灌輸」你的ostream(字面意思ostr.imbue())您將創建以您想要的方式格式化數字。

我建議首先編寫一個函數,將數字轉換爲使用所需格式的字符串。一旦你有了這個想法,如果你希望全身心投入並且做一些當地的東西,你可以(或者你可能會認爲它太複雜了,這是大多數人最終做的)。

相關問題