我想用C做一个计算器程序。我已经完成了大部分工作,我认为...只是输出不正确。应该出来的输出不会。下面是计算器程序的代码!C中的计算器错误
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void add(double num1,double num2);
void del(double num1,double num2);
void mul(double num1,double num2);
void divide(double num1,double num2);
main(){
FILE *fp;
char sym;
float num1, num2;
int ret;
fp = fopen("input.txt","r");
if(fp==NULL){
exit(1);
}
while(fscanf(fp,"%f%c%f", &num1,&sym,&num2)!=EOF){
switch(sym){
case '+': add(num1,num2);
break;
case '-': del(num1,num2);
break;
case '*': mul(num1,num2);
break;
case '/': divide(num1,num2);
break;
default: printf("%f%c%f", num1,sym,num2);
}
}
fclose(fp);
}
void add(double num1,double num2){
double result;
result = num1+num2;
printf("%f\n", result);
}
void del(double num1,double num2){
double result;
result = num1-num2;
printf("%f\n", result);
}
void mul(double num1,double num2){
double result;
result = num1*num2;
printf("%f\n", result);
}
void divide(double num1,double num2){
double result;
result = num1/num2;
printf("%f\n", result);
}
当我有投入:
123456789+987654321
123456789-987654321
12345*54321
1349.238912+12384.12871
3918.381631-1287.38272
我应该得到的结果如下:
1111111110.000000
-864197532.000000
670592745.000000
13733.367622
2090.998911
但这些结果我居然得到:
1111111128.000000
-864197544.000000
670592745.000000
13733.367798
2090.998901
我不是t甚至可以肯定为什么中间操作运行良好时,其余不 我已经尝试使用float作为我的数据类型为num1
和num2
,但结果远比使用double更关闭。
请注意,每个函数都可以解析为一行。 (即printf(“%f \ n”,num1 + num2);)。或者,您甚至可以将这些单线插入您的开关盒中。 – sherrellbc
[每个计算机科学家应该知道的关于浮点算术](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – Pavel
上周的课程主页作品似乎是计算器和阅读/打印字符元组...... ;-) – alk