2016-09-16 103 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庫增加號碼存儲以精確保持號碼。 –