2016-09-16 168 views
0

刚刚成功使用MPFR C++编译程序(第一次)时,我需要打印出一些相当大的数字,但它们只是作为工程符号而不是整个数字出现。从我读的内容来看,这个库并没有针对(任意)整数进行优化,因此可以将浮点数作为整数使用,因为它们不会有任何小数。我只是C++的初学者,所以我不知道通过所有可用工具的方式,但有没有办法将(大)浮点数打印出来,就好像它们是整数一样?作为一个例子,代替(说)1.12276e+44,打印112275575285571389562324404930670903477890625。如果我尝试std::cout.precision(44),我得到1.12275575285571389562324404930670903477890625e+44,这看起来不太好。MPFR C++打印整数等浮点数

+0

你有没有尝试[使用任何其他浮点输出格式](http://en.cppreference.com/w/cpp/io/manip/fixed)? –

+0

如果添加'std :: fixed',会发生什么?来源:http://en.cppreference.com/w/cpp/io/manip/fixed –

+0

@JoachimPileborg不,我没有。感谢您发布链接。 'std :: fixed'似乎接近我想要的,而不是打印小数。这是唯一的方法吗? –

回答

3

MPFR C++允许精确调整输出格式la printf样式(如果标准C++功能不够)。例如:

std::cout<<x.toString("%34.0RNf")

请参考MPFR手册括号格式规范。 你也可以检查这个问题:https://stackoverflow.com/a/9627660/479995

+0

谢谢你的回答。我不认为有一种方法可以实际处理大整数,而不是浮点?我的需求是生成多项式,顺序可以达到50,但我仍在考虑是否应该限制它,或让用户玩得开心...... –

+0

其实MPFR不是大整数的库,它不是很好想法用浮点类型来模拟它们。 GMP/MPIR专注于此(请参阅mpz_t类型),这些库存在一些C++包装器。 –

+0

浮点类型有固定的位数来存储数字 - 所以真正的大整数将四舍五入到这个位数。本地big-int库增加号码存储以精确保持号码。 –