2015-11-05 78 views
-2

我跑http://cpp.sh/大雙被四捨五入爲int - C++

// Example program 
#include <iostream> 
#include <string> 
using namespace std; 
int main() 
{ 
    double avg = 112964.6; 
    cout << avg << endl; 
} 

我拿到112965作爲輸出以下代碼。我已經在其他編譯器中嘗試過了 - 結果相同。

它適用於像11296.6這樣的較小的雙精度值,但像112964.6這樣的大精度雙精度值可以四捨五入爲int。它爲什麼這樣做,我如何阻止它做到這一點?

謝謝!

+0

你是什麼意思「它適用於較小的雙重價值」?你期望什麼值? – Adam

+0

爲avg = 11296.6,我得到11296.6在輸出 - 沒有舍入 – user5527407

+4

你試過'setprecision()'?它的默認值是6,這就是爲什麼它如你所描述的那樣四捨五入。 – Kevin

回答

1

您必須設置什麼是要使用的小數精度,可以用流處理器setprecision (int n)做到哪裏n將要使用的新的精度。

你可以看一下下面的例子從http://www.cplusplus.com/reference/iomanip/setprecision/

// setprecision example 
#include <iostream>  // std::cout, std::fixed 
#include <iomanip>  // std::setprecision 



int main() { 
    double f =3.14159; 
    std::cout << std::setprecision(5) << f << '\n'; 
    std::cout << std::setprecision(9) << f << '\n'; 
    std::cout << std::fixed; 
    std::cout << std::setprecision(5) << f << '\n'; 
    std::cout << std::setprecision(9) << f << '\n'; 
    return 0; 
    } 

當預期輸出應該是:

3.1416 
3.14159 
3.14159 
3.141590000 
2

嘗試setprecision

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
    double avg = 112964.6; 
    cout << setprecision(9) << avg << endl; 
}