我当前的Project使用MPIR来获得任意精度浮点数。 我想计算两个花车的fmod。如果我尝试编译我的代码,我会得到一个错误,我无法理解。
>C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(2392): error C2665: '__gmp_binary_modulus::eval' : none of the 7 overloads could convert all the argument types
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(615): could be 'void __gmp_binary_modulus::eval(mpz_ptr,mpz_srcptr,mpz_srcptr)'
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(618): or 'void __gmp_binary_modulus::eval(mpz_ptr,mpz_srcptr,mpir_ui)'
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(620): or 'void __gmp_binary_modulus::eval(mpz_ptr,mpir_ui,mpz_srcptr)'
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(638): or 'void __gmp_binary_modulus::eval(mpz_ptr,mpz_srcptr,mpir_si)'
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(642): or 'void __gmp_binary_modulus::eval(mpz_ptr,mpir_si,mpz_srcptr)'
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(653): or 'void __gmp_binary_modulus::eval(mpz_ptr,mpz_srcptr,double)'
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(660): or 'void __gmp_binary_modulus::eval(mpz_ptr,double,mpz_srcptr)'
1> while trying to match the argument list '(__gmp_resolve_expr<mpf_t>::ptr_type, mpf_srcptr, mpf_srcptr)'
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(2392) : while compiling class template member function 'void __gmp_expr<T,U>::eval(__gmp_resolve_expr<mpf_t>::ptr_type,mpir_ui) const'
1> with
1> [
1> T=mpf_t,
1> U=__gmp_binary_expr<__gmp_expr<mpf_t,mpf_t>,__gmp_expr<mpf_t,mpf_t>,__gmp_binary_modulus>
1> ]
1> C:\Users\Heurazio\Documents\Visual Studio 2012\Projects\Projektarbeit\Projektarbeit\libs\mpir\x64\Debug\mpirxx.h(2305) : see reference to function template instantiation 'void __gmp_expr<T,U>::eval(__gmp_resolve_expr<mpf_t>::ptr_type,mpir_ui) const' being compiled
1> with
1> [
1> T=mpf_t,
1> U=__gmp_binary_expr<__gmp_expr<mpf_t,mpf_t>,__gmp_expr<mpf_t,mpf_t>,__gmp_binary_modulus>
1> ]
1> TestCases\MPIR\F_F\TC_MPIR_F_F_MOD_01_A.cpp(34) : see reference to class template instantiation '__gmp_expr<T,U>' being compiled
1> with
1> [
1> T=mpf_t,
1> U=__gmp_binary_expr<__gmp_expr<mpf_t,mpf_t>,__gmp_expr<mpf_t,mpf_t>,__gmp_binary_modulus>
1> ]
我的代码是:
this->t = this->n[0] % this->n[1];
我也试过
this->t = fmod(this->n[0], this->n[1]);
并且使用了许多mpir函数,并且都具有相同的结果。
变量是
mpf_class* n;
mpf_class t;
如果我检查%运算符重载,我就不会发现&#34;%&#34;。是否有可能获得两个mpf_class变量的fmod?如果是的话,你能给我一个线索吗?
提前致谢 亚历
答案 0 :(得分:-1)
您不能在%C ++中使用%运算符和浮点值。
你应该按照你的建议使用fmod。