2013-10-10 58 views
2

比方說,我有一個GMP浮點值 - 與給定精度打印出來在基地10

mpf_t number; 

,等於1.25。我想用一個給定精度打印,即使將尾隨零的,例如

1.2500000 

當我試圖通過使用mpf_get_str功能打印它,它打印在科學(E)格式,

mpf_out_str(stdout,10,7,number); //prints 0.125e1 

當我使用C++的COUT,如mpf_t具有< <超載,

cout << number << endl; //prints 1.25 

,當我嘗試通過調用setprecision到打印(給定精度)在cout中,我仍然得到1.25

cout << setprecision(7) << number << endl; //prints 1.25 

那麼,我該如何打印數字,因爲我喜歡它?

+0

由於您使用的是C++,不是'mpf_class'比'mpf_t'更適合嗎? – DanielKO

+0

在C中,gmp_printf有合適的選項。在C++中,DomCote已經回答了。 –

回答

2

你需要發送std :: fixed到std :: cout。

#include <iostream> 
#include <gmpxx.h> 

int main(int argc,char* argv[]) 
{ 
    mpf_t mpft; 

    mpf_init(mpft); 
    mpf_set_d(mpft,1.25); 

    std::cout.precision(7); 
    std::cout << std::fixed; 
    std::cout << mpft << std::endl; 

    return 0; 
}