【发布时间】:2015-08-28 11:27:00
【问题描述】:
我已经写了这段代码:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int x,n,result;
cout<<"enter the value"<<endl;
cin>>x;
cout<<"enter the power"<<endl;
cin>>n;
result=pow(x,n);
cout<<"the result of power\t"<<x<<"to\t"<<n<<"=\t"<<result;
}
当我分配 x=10 n=2 时,结果是 99 而不是 100。
当我将 x,n,result 更改为 float 类型时,输出为 x=10 n=2 result=100。
谁能解释一下为什么会有这种差异?
【问题讨论】:
-
先知道
pow是一个浮点函数,再看floating point math is not broken。 -
您(在不知不觉中)使用浮点计算。将浮点数转换为整数是错误的来源。如果您改为直接打印
pow(x,n),您会得到更合理的答案。 -
投反对票,因为这个问题对任何人都没有帮助。
-
@23ars 我不同意。不过,很可能是重复的,但如果是这样,问题应该被关闭,而不是被否决
标签: c++