所以我在 php-cpp 的帮助下写了一个小扩展。在这个函数中,我只是简单地计算 pow,它工作得很好。计算结果后,我从函数返回字符串。当我在 php 中调用此扩展函数时,我收到一个整数,其中包含我的原始字符串的 strlen,而不是我的字符串:
Php::Value Math::some_pow(Php::Parameters ¶ms)
{
mpfr_t base, exponent, result;
mpfr_set_emin(mpfr_get_emin_min());
mpfr_init2(base, 256);
mpfr_init2(exponent, 256);
mpfr_init2(result, 10);
mpfr_set_str(base, params[0], 10, GMP_RNDN);
mpfr_set_d(exponent, params[1], GMP_RNDN);
mpfr_pow(result, base, exponent, GMP_RNDN);
char data[255];
mpfr_snprintf(data, 254, "%.20Ff", result);
return data;
}
输出,以验证函数内的mpfr_printf
所有内容是否正常工作:
base=1e+02 exponent=8.3999999999999996891375531049561686813831329345703125e-01
Result=4.7875e+01
所以函数本身应该返回以下内容:Result=4.7875e+01
在 PHP 中;调用函数,如下所示:
$result = $math->some_pow(100, 0.84);
输出通过var_dump($result);
显示 17 -> "Result=4.7875e+01" 的 strlen