質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

520閲覧

次のC言語のプログラムが正しいかを教えてください

blackoutlaw

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2023/11/20 16:29

苦CというサイトでC言語を勉強している初心者です。そして問題として次の内容が出てきました。

1本198円の清涼飲料水1本と、1本138円の牛乳2本を購入し、千円札で払った場合のお釣りを求めよ。ただし、5%の消費税を追加し、お釣りの額は整数とする。なお、消費税を四捨五入するかどうかは自由とする。

すると、解答は次のようでした。

#include <stdio.h> int main(void) { int juice, milk, money, payment, change; double tax; juice = 198; milk = 138; money = 1000; tax = 1.05; payment = (int)((juice + milk * 2) * tax); change = money - payment; printf("%d円\n", change); return 0; }

表示結果は以下のようです。

503円

しかし、これはおかしくないでしょうか?
消費税が切り捨ての場合、(198×1.05)+({138×1.05}×2) =207+(144×2) =207+288=495 1000円出すとお釣りは505円
消費税が四捨五入(切り上げ)の場合、(198×1.05)+({138×1.05}×2) =208+(145×2) =498 1000円出すとお釣りは502円
……だと思うので、503円となるのがよくわかりません。このプログラムが正しいのかどうか、もしくは自分が何を勘違いしているのかを、お教えください。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2023/11/21 02:31

プログラムの話と見せかけておいて 実は 消費税の仕様(?) について問いたいだけという話!!
guest

回答1

0

ベストアンサー

そのプログラムでは,消費税の端数を切り捨てるのは金額の総和を出してからです.
したがって,(198 + 138 x 2) x 1.05 = 474 x 1.05 = 497.7これを切り捨てて1000円支払うとおつりは1000 - 497 = 503円です.

投稿2023/11/20 16:56

編集2023/11/20 17:47
PondVillege

総合スコア1581

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

blackoutlaw

2023/11/20 17:42 編集

ご回答ありがとうございました。 これはそもそも自分の消費税の解釈がズレていました……ふつう個別に税込みを出してから合計するもんだと思っていました。でも調べてみると、総額に消費税をかけるのでも、税込みを合計するのでもどちらでも良いんですね。 このプログラムは間違いではないとわかりました、どうもです。
otn

2023/11/21 06:18 編集

> ふつう個別に税込みを出してから合計するもんだと思っていました。 数年前から、コンビニなどに「総額に対して消費税計算するので、複数まとめて買うと、バラに買った場合より高くなる場合があるが、ご了承ください」という意味の掲示が出て、税込み金額も小数点以下2桁まで表示されてたりしますね。実際には、合計に対して消費税率を掛けますが、それだと1円でも安くしたい人が事前に試算するのが大変なので、下2桁表示を追加したのでしょう。1円でも安くしたい人は、小数点以下2桁を合計して1円を越えるなら、バラで買うという選択肢もあるよと言うことかと。 何らかの行政指導があったのかと思っています。 こんどコンビニに行ったら注意してみましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問