- 締切済み
少数以下を四捨五入
二つの値段を合計したものを表示したいのですがどうすればいいのか分からないのでご指導お願いします。 二つの値段を実数で求めたものを最終的に合計して、小数点以下を四捨五入するところが分かりません。構造は変えないで、最後の合計を表示する方法をお教えくださいm(_ _)m #include <stdio.h> int main(void) { int apple,orange; double a,b,; printf("りんごの個数: "); scanf("%d", &apple); printf("みかんの個数: "); scanf("%d", &orange); printf("<りんご>\n"); printf("単価 :100円\n"); printf("個数 :%d\n", apple); if (apple>=10 && 20>apple) { printf("割引率:10%%\n"); printf("りんごの合計金額:%.1f円\n", (double) 100*apple-100*apple*10/100); (double) (100*apple-100*apple*10/100)==a; } else if (apple>=20) { printf("割引率:20%%\n"); printf("りんごの合計金額:%.1f円\n", (double) 100*apple-100*apple*20/100); (double) (100*apple-100*apple*20/100)==a; } else if (10>apple && 10>orange && apple+orange>=10) { printf("割引率:5%%\n"); printf("りんごの合計金額:%.1f円\n", (double) 100*apple-100*apple*5/100); (double) (100*apple-100*apple*5/100)==a; } else { printf("りんごの合計金額:%.1f円\n", (double)100*apple); (double) (100*apple)==a; } printf("<みかん>\n"); printf("単価 :50円\n"); printf("個数 :%d\n", orange); if (orange>=10) { printf("割引率20%%:\n"); printf("みかんの合計金額:%.1f円\n", (double) 50*orange-50*orange*20/100); (double) (50*orange-50*orange*20/100)==b; } else if (10>apple && 10>orange && apple+orange>=10) { printf("割引率:5%%\n"); printf("みかんの合計金額:%.1f円\n", (double) 50*orange-50*orange*5/100); (double) (50*orange-50*orange*5/100)==a; } else { printf("みかんの合計金額:%.1f円\n", (double) 50*orange); (double) (50*orange)==b; } printf("<合計>\n"); printf("合計金額:\n"); printf("");←ここら辺にa+bを代入?したいのですが…。 return 0; }
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
>構造は変えないで、 と書かれていますが、提示されたソースコードはコンパイルが通りません。 ああ、「←ここら辺にa+bを代入?したいのですが…。」のせいではないですよ。別のところです。 さて、どうすればいいでしょうか。
- cisim_body
- ベストアンサー率22% (50/221)
「少数以下を四捨五入」なんて絶対にできないでしょ。
- akiyousan
- ベストアンサー率29% (13/44)
NO.1の方のやり方で問題ないと思いますが、 四捨五入とはどういう事なのかを考えて、(知ってるよ!とは言わないで下さい) 多少面倒くさいやり方もできるようになったほうが 良いと思います。 100.0円以上100.4円以下なら100円(説明の都合上、99円台は無視してます) 100.5円以上100.9円以下なら101円 ですよね? 要は0.5円未満は切り捨て、0.5円以上は切り上げ 小数点以下を判定してあげて、 ・整数部のみ有効にする ・プラス1円する どちらかを実施すれば良いと思います。
- koko_u_
- ベストアンサー率18% (459/2509)
>小数点以下を四捨五入するところが分かりません。 (int)(a+b+0.5)