我想用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