我有兩個整數(gmpz_t),我需要將它們表示爲一個分數(一個是分子,另一個是分母)。我找到的唯一解決方案是使用char* mpz_get_str (char *str, int base, mpz_t op)
將它們都轉換爲char*
,然後用中間的「/」連接它們,然後使用int mpq_set_str (mpq_t rop, char *str, int base)
將該值放入合理值。但是,這似乎是一個很大的努力,我想有一個更好的方法。如何將兩個gmpz_t轉換爲mpq_t?
1
A
回答
2
爲什麼不通過mpq_set_z
將每個轉換爲mpq_t
,然後除以?
0
特別是,如果你有mpz_t rn, rd
(分子,分母),這將是我的解決方案:
mpq_t ratn, ratd, t;
mpq_init(ratn);
mpq_init(ratd);
mpq_set_z(ratn, rn);
mpq_set_z(ratd, rd);
mpq_init(t);
mpq_div(t, ratn, ratd);
mpq_clear(ratn);
mpq_clear(ratd);
...
do something with t
...
mpq_clear(t);
0
從the documentation,有功能mpq_set_num
和mpq_set_den
,使您可以單獨設置一些分子和分母mpz_t
。更一般地說,mpq_numref
(或mpq_denref
)可讓您使用mpq_t
的分子(分母),就像它是mpz_t
一樣,因此您可以撥打mpz_set(mpq_numref(q),z)
。爲了安全起見,我會在之後致電mpq_canonicalize
。
相關問題
- 1. 如何將一個整數轉換爲兩個並輕鬆地轉換轉換?
- 2. 如何將一行轉換爲兩行?
- 3. 如何轉置/將兩個變量轉換爲一行?
- 4. C#如何將兩個或多個整數轉換爲日期?
- 5. 如何將兩個字符串轉換爲單個字典?
- 6. 如何將兩個字節轉換爲一個16位數字?
- 7. 如何使用sed將兩個字符轉換爲一個
- 8. 指針轉換,無法將兩個*轉換爲一個*
- 9. 將兩個svn倉庫轉換爲git
- 10. 將兩個列表轉換爲矩陣
- 11. 將兩個圖像轉換爲pdf
- 12. 將兩個列表轉換爲字典?
- 13. 將兩個字符串轉換爲NSDate
- 14. 將兩個布爾轉換爲int
- 15. 將sql轉換爲LINQ與兩個表
- 16. C#將IDictionary轉換爲兩個ILists
- 17. 如何將兩個(for循環)轉換爲(while循環)?
- 18. 如何將ieee754雙打轉換爲兩個整數的分數?
- 19. 如何將字節數組轉換爲兩個長整型值?
- 20. 如何將兩個字符(' - '和'_')轉換爲JSON格式
- 21. R - 如何將兩個`for`循環轉換爲`lapply`?
- 22. 計算兩個元素onkeyup - 如何將其轉換爲jQuery?
- 23. 如何在Lua中將字符串轉換爲「兩個」整數?
- 24. 如何將兩個日期轉換爲月份格式c#
- 25. MySQL如何將兩個JOIN表的SUM()列轉換爲新列?
- 26. TinyOS:如何將uint_16轉換爲兩個uint_8整數(AES加密)
- 27. 如何使用8位將兩個字節數轉換爲兩個數字?
- 28. 如何將這個XML轉換爲CSV
- 29. 如何將這個SQL轉換爲LINQ?
- 30. 如何將一個void *轉換爲CString
這應該工作,沒有想到它。我會測試它,如果它按預期工作,我會接受你的答案。 –
他們真的應該爲此提供一個專門的功能。 – rwst