我正在尝试使用 c++ 计算 65^17。我编写了以下代码,但在 65^11 时得到了错误的值。计算答案的正确方法是什么?(即 65^17)
代码 :
long double data= 1;
int m_ne=17;
int i_data=65;
for(int i=1;i<= m_ne;i++)
{
data = data * (i_data);
std::cout.precision(15);
std::cout<<" "<<std::fixed <<data<<std::endl;
}
输出:
65.000000000000000
4225.000000000000000
274625.000000000000000
17850625.000000000000000
1160290625.000000000000000
75418890625.000000000000000
4902227890625.000000000000000
318644812890625.000000000000000
20711912837890625.000000000000000
1346274334462890625.000000000000000
87507831740087890624.000000000000000
我尝试了以下选项,但都是徒劳的
1. data = floor( data +0.5) * i_data ;
2. data = floor( data +0.5) * floor (i_data + 0.5 ) ;
By declaring i_data as float .
3.
data = data * i_data ;
data = floor ( data + 0.5 )
我阅读了有关双重的帖子,但我没有得到解决方案。