C言語での簡易計算機
9428 ワード
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 double data1, data2;
6 char op;
7 while (3 == scanf("%lf%c%lf", &data1, &op, &data2) )
8 {
9 double result;
10 printf("%lf%c%lf=", data1,data2);
11 switch (op)
12 {
13 case '+':
14 result = data1 + data2;
15 break;
16 case '-':
17 result = data1 - data2;
18 break;
19 case '*':
20 result = data1 * data2;
21 break;
22 case '/':
23 result = data1 / data2;
24 break;
25 default:;
26 }
27 printf("%lf
", result);
28 }
29
30 return 0;
31 }
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
説明:上記のコードは、特定の演算を計算する際に丸めエラーが発生します.原因は未定です.コードの修正は以下のように解決します.
1 #include <stdio.h>
2 int main()
3 {
4 float data1, data2;
5 char op;
6 while (3 == scanf("%f%c%f", &data1, &op, &data2) )
7 {
8 float result;
9 printf("%f%c%f=", data1, op, data2);
10
11 switch (op)
12 {
13 case '+':
14 result = data1 + data2;
15 break;
16 case '-':
17 result = data1 - data2;
18 break;
19 case '*':
20 result = data1 * data2;
21 break;
22 case '/':
23 result = data1 / data2;
24 break;
25 default:;
26 }
27 printf("%f
", result);
28 }
29
30 return 0;
31 }