GMP浮动值 - 在基数10中以给定精度打印它们

时间:2013-10-10 19:20:09

标签: c++ output gmp number-formatting

假设我有一个

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

当我尝试通过在cout中调用setprecision(给定精度)来打印它时,我仍然得到1.25

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

那么,我该如何打印我喜欢的号码?

1 个答案:

答案 0 :(得分: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;
}