mpfr_set_str() 関数を使用して、値 0.9999 を mpfr_t 変数に格納しようとしています。
ただし、丸め値 (GMP_RNDD、GMP_RNDU、GMP_RNDN、GMP_RNDZ) に関係なく、0.9999 は保存中に 1 (または他の値 != 0.9999) に丸められます。
mpfr_set_str() を使用して mpfr_t 変数に 0.9999 を格納する最良の方法は何でしょうか? 出来ますか?
これが私のテストプログラムです。必要な「buffer is: 0.9999」ではなく、「buffer is: 1」と出力されます。
int main()
{
size_t precision = 4;
mpfr_t mpfrValue;
mpfr_init2(mpfrValue, precision);
mpfr_set_str(mpfrValue, "0.9999", 10, GMP_RNDN);
char *buffer = (char*)malloc((sizeof(char) * precision) + 3);
mp_exp_t exponent;
mpfr_get_str(buffer,
&exponent,
10,
precision,
mpfrValue,
GMP_RNDN);
printf("buffer is: %s\n", buffer);
free(buffer);
mpfr_clear(mpfrValue);
return 0;
}
助けてくれてありがとう