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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

3回答

2484閲覧

消費税計算機のスクリプトがあっているか見て欲しい

y0shida

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/09/22 17:09

学習本にあった、計算機を改造して入力された消費税を計算するスクリプトを書いたのですが
答え合わせの方法がないので計算方法が合っているか教えて欲しいです。

static void Main ( string [] args ) { float a = float.Parse(Console.ReadLine()), //消費税  b = 100, c = a / b, //消費税を100で割る d = float.Parse(Console.ReadLine()), //商品の金額 e = d + (d * c); //金額と消費税をかけた値を金額に足す Console.WriteLine(e); }

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

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

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

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

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

gentaro

2021/09/22 19:05

floatをそのまま出力している時点でどうあがいても間違ってる(端数処理がない時点で税額としてありえないし、税額計算に使うには精度に問題がある)けど、仮にそこを仕様の問題という事で差し引いても、「答え合わせの方法がわからない」ということは、「小学生レベルの算数の検算の方法がわからない」のと同義に見えるんで、プログラミングの前に算数の復習からじゃないかな。
m.ts10806

2021/09/22 23:36

>答え合わせの方法がない 実装前に想定していた結果と実行結果が合っていれば「正解」です。
hentaiman

2021/09/23 00:45

> 計算方法が合っているか 計算方法が合っているか分からないという事はつまり以下を全く理解していないという事に他なりません https://www.nta.go.jp/taxes/shiraberu/taxanswer/shohi/shouhi.htm これを知らずに計算式を作る事がおかしいので、まずはプログラムの手前の部分を勉強しましょう これらを理解したら自分のコードの計算部分が何をしているのか90%理解出来るようになります 残り10%はjavascriptの知識が必要です
episteme

2021/09/23 04:00

> 答え合わせの方法がない なんで? いくつか用意した"税率と金額の組"に対し、 それぞれの"税込み価格(=期待する結果)"がわからんと言うてます?
y0shida

2021/09/23 13:54

URLリンク等参考になりました。 ありがとうございます。
guest

回答3

0

回答

答え合わせの方法がないので

  1. 正しい消費税計算結果(税抜き価格と税込み価格のセット)を手計算なりエクセルなりで用意する。ご自身が納得できる量を用意しましょう。
  2. 1と同じ範囲の数値を自作したプログラムに計算させる
  3. 1と2を比較する

と言う感じで答え合わせ(テストケースの作成とテスト)を行ってみてください。
計算結果が合わなければ
税額計算 浮動小数点とかC# 消費税計算とかで調べてみて下さい。

補足

他のプログラムでも基本的には同じ流れで自分でテストするところまでが最低限のコーディングとなるので、コードを書く前に

  • どういう結果が出れば正しいと言えるのか
  • どうすればテストしやすくなるか(今回のケースだと、1で用意するファイルをCSVで用意して、CSVを読み込んだあと、計算結果を比較するプログラムを用意するとか)

を考えてみると開発効率と精度が上がります。

投稿2021/09/22 20:11

編集2021/09/22 20:14
tanat

総合スコア18713

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

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

y0shida

2021/09/23 13:54

スプレッドシートを使ってみました。 比較した限り違いはなかったので、恐らく間違ってないともいます。 デバッグ参考なりましたありがとうございます。
guest

0

ベストアンサー

(ここ回答本文じゃなくて修正依頼に書けよと言われそうですが)何となく質問者さんの問題点がわかった気がするので書いておきます。

答え合わせの方法がないので計算方法が合っているか

実行結果が合っているか…というより、「このコード合ってる?」的なものかなと。
そういう意味でなら、「知らん」です。(言い方が悪いが)

そもそも前提が違うのです。

プログラミングっていうのは学校でやる数学や国語とかのように**「この答え一つしかない」ではありません**。

プログラミングっていうのは小説を書くとか、創作料理のレシピ考案とかに近いです。
最終的にその処理になればいいのです。もちろん仕様に沿っていて、結果が合っていないと話にならないですが。

つか、質問にあるコード、コンパイル自体が通らない気がしますが。
C#とかであれば Paiza IOとかを使えばいいでしょ。

プログラミング以前の問題です。基礎をないがしろにしていて、思考停止しているのですから。

まずは基礎からやりましょう

そして、ロジックを考えましょうです。

プログラミングっていうのは「こう書けばいい」…ではありません
プログラムは魔法でもなんでもなく、人間が現実世界でやっている手順を独自の書き方で書き下し、それを逐一指示されながら処理いるだけの代物である」です。

簡単に言えば『現実世界のシミュレーション』です。

基礎( for文やら変数やらif文やら ) はそれを実現するための道具です。

まず、質問者さんはプログラミングがとかは置いといて、現実世界で消費税の計算をする場合、どういう風にしますか?

言い換えると、

[依頼] Aさんが「現在の消費税率(n%)」と「商品の値段(m円)」を言うので、 あなたはその商品の税込み価格がいくらになるか計算してください。

みたいな仕事かなんかだとします。
さて、質問者さんはどのようにしますか?

私なら、

1. Aさんが「現在の消費税」を言う -> 文字式 n に代入 2. Aさんが「商品の値段」を言う -> 文字式 m に代入 3. 消費税率を少数にしたやつを計算 -> 文字式 r に代入(= tax Rate ) 4. (3)を使って消費税を計算する 5. (2) に (3) を足す 6. (5)で求まった答えを言う

的なものでしょうね。

これをコードにすればいいだけです。

(1), (2)は単純に聞けばいいので、「標準入力」(C#だとConsole.ReadLineとか)で聞く。
ただ、今回は(質問のコード的に)

10 200

とかみたいに、一行ずつみたいなので、Console.Readメソッドでもいけそう。
とりあえず聞く。

(3)~(5)は単純な計算と代入。(変数宣言も必要だが)

(6)は標準出力(C# だと Console.WriteLineとか) でできますね。

ほら、これだけです。

後はデバッグと呼ばれる、エラーメッセージを読んで対処したり、結果を合わせたりとかするだけです。

ただ、質問のコードを見るに、上記のような考え方をやる以前の問題ですね。
基礎が分かっていたらあり得ないバグを持っています。(バグというよりはエラー原因だが)

ヒント: 消費税の計算方法

投稿2021/09/23 06:46

編集2021/09/23 12:27
BeatStar

総合スコア4958

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

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

y0shida

2021/09/23 13:52

Console.WriteLineで質問形式にしてみると 自分でコードを見たときに、ただ変数が並ぶよりも可読性が上がりました。 ありがとうございます。
guest

0

回答を元に新しく作ってみました
小数点の扱いに関しては法律で決められていたわけではなかったので調べた限り一般的そうな
切り捨てで計算しました。
計算結果をGoogleスプレッドシートと複数の計算サイトと比較しても違いはなかったので恐らくあってると思います。
ありがとうございました。

using System; namespace aaaaaa { class Program { static void Main ( string [] args ) { double a,b,c,d; Console.WriteLine("税率を入力してください"); a = double.Parse(Console.ReadLine()) / 100; //入力された税率を100分の1にする Console.WriteLine("商品の金額を入力してください"); b = double.Parse(Console.ReadLine()); //商品の金額 //計算 c = b * a; //商品の金額に税率を掛けて税を求める d = b + c; //商品の金額に税を足す Console.WriteLine("合計金額は {0} です",Math.Floor(d)); //小数点1以下切り捨てした金額を表示 } } }

投稿2021/09/23 13:55

y0shida

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問