2014-01-13 65 views
7

我正在比較兩個程序的輸出,其中一個C使用另一個C++,使用diff,所以輸出必須相同。我可以使printf格式像C++流一樣浮點數

是否有任何方法可以將printf加倍,以便格式化爲使用<< mydouble打印的格式。我目前使用printf("%g",mydouble)

這裏

是的差別一些例子:

c: 3.24769e-05 c++: 3.2477e-05 
c: 0.0026572 c++: 0.00265721 

有趣的科學記數法在C的數字,十進制數表示有更多的C++。

+0

使用'在C++ printf'可能會更容易。 – woolstar

+2

[手冊]的哪個部分(http://www.cplusplus.com/reference/cstdio/printf/)您有疑問? –

回答

3

您可以通過在C.

例如使用格式說明解決這個問題,說你想小數點後打印出來只有3個名額,你可以讓你的printf像這樣:

printf("%.3lf", dub); 

隨着double dub = .0137;值輸出將0.014

,如果你想更精確的打印,你可以寫這與第二種情況解決問題:

printf("%.8lf", dub); 

然後您的double dub = 0.00265721;輸出將是0.00265721

爲%g的情況下的工作方式相同,除了在左邊的號碼被包括在計算中。如果你想在C++版本(精度較低我假設),那麼你的代碼應該是這樣的:

double dub = .0000324769; 
printf("%.5g", dub); 

其中產量3.2477e-05

+0

至少在我的系統中,將'%g'更改爲'%.5g'會使輸出十進制代替某些值的科學值。 – jsj

+0

哦好吧.4是我需要的 - 呃 – jsj