小编Kno*_*ker的帖子

c ++:正确计算大数量的功率的方法

我试图用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;
 }
Run Code Online (Sandbox Code Playgroud)

输出:

65.000000000000000
 4225.000000000000000
 274625.000000000000000
 17850625.000000000000000
 1160290625.000000000000000
 75418890625.000000000000000
 4902227890625.000000000000000
 318644812890625.000000000000000
 20711912837890625.000000000000000
 1346274334462890625.000000000000000
 87507831740087890624.000000000000000
Run Code Online (Sandbox Code Playgroud)

我尝试了以下选项,但都是徒劳的

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 …
Run Code Online (Sandbox Code Playgroud)

c++ double

0
推荐指数
1
解决办法
147
查看次数

标签 统计

c++ ×1

double ×1