Лучше всего использовать mpfr_set
после установки точности, как вы это сделали. Округления не будет, или, если вы предпочитаете, операция округления не изменит значение. Если значение равно NaN, его знаковый бит не будет скопирован, но вам, вероятно, все равно (и если вам действительно важно, вы все равно можете скопировать знаковый бит с помощью mpfr_copysign
).
Не копировать mpfr_t
с memcpy
или что-то подобное. После этой копии вы получите то же значение, но значение и будет разделено обоими числами (так как одно поле является указателем на значение и), а изменение одного из этих чисел изменит другое, и вы получите еще более ошибочное поведение c (возможно cra sh ...) в случае, если число изменяется на специальное значение (NaN, ± Inf, ± 0) или изменяется его точность.