2013-09-23 55 views
1

我試圖在我的程序中使用long double類型來打印出pi的更多數字。但它只顯示5位十進制數字。無法打印pi的更多小數

這是我的代碼。

int main(int argc, char** argv) { 

    long double pi_18 = acos(static_cast<long double>(-1)); 
    cout << "pi to 18:" << pi_18 << endl; 

    return 0; 
} 

,這是我的輸出:

pi to 18: 3.14159 

我怎樣才能解決這個問題?

+1

ACOS()接受雙並返回一個double所以即使您在輸入和輸出轉換成長雙倍你永遠不會超出雙精度,因爲輸入被截斷爲雙精度,輸出是雙精度值的長雙精度的轉換,請使用acosl()而不是 – woggio

+1

@ user2318607 - 如果'acos'爲'std :: acos' from''它超載,'acos((-1)'返回long double,但函數調用最好寫成'aces(1.0L)'。 –

回答

2

像這樣:

#include <iomanip> 
#include <iostream> 

std::cout << std::setw(15) << pi_18 << std::endl; 

寬度僅修改影響下一個格式化操作,因此,如果您想格式化多個號碼,你擁有的每一個前重複。檢查格式說明符the full documentation