为什么c语言输出与计算器算出的值有误差?2
发布网友
发布时间:2024-03-02 03:05
我来回答
共5个回答
热心网友
时间:2024-03-31 02:30
估计是你在计算器上算错了,或者你的计算器的精度不够。
我把你的C程序跑了几遍,结果和你运行C的结果一样。
然后我又在Mathmatica里面算了一遍,结果和C得到的结果是一样的。具体见下面两张截图。
热心网友
时间:2024-03-31 02:32
#include <fstream>
using namespace std;
void Calculator(void)
{
int a[4],b[4],c[4],i,j,k;
char ch[4];
ofstream outfile("cal.txt");
for(i=0;i<=3;i++)
{
cin >> a[i] >> ch[i] >> b[i];
switch(ch[i])
{
case '+':c[i]=a[i]+b[i]; break;
case '-':c[i]=a[i]-b[i]; break;
case '*':c[i]=a[i]*b[i]; break;
case '/':c[i]=a[i]/b[i]; break;
}
}
for(k=0;k<=3;k++)
{
outfile << a[k] << ch[k] << b[k] << "=" << c[k] << endl;
}
outfile << "finished!" << endl;
};
热心网友
时间:2024-03-31 02:32
我猜是因为pi取值的原因,小数点后的精度还是会影响最后的计算值的。
热心网友
时间:2024-03-31 02:30
如图,要算w2,但是用计算器算出来是-1.93,但是用c语言就算错了
热心网友
时间:2024-03-31 02:31
少1的原因是浮点数在计算机里存储的方式导致它的值不准,也就是说0.03存储在计算机里的值可能只是约等于0.03,具体原因你可以查一下float和double型的存储格式的资料。
所以如果你想要得到期望的结果,必须全部使用整型类型进行计算,也就是在得到a的值以后,把所有的比较和计算都放大1000倍进行