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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

解決済

クイズで全問正解しても正答率が100%にならない

begine
begine

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

2回答

-2評価

0クリップ

1114閲覧

投稿2020/07/01 15:54

編集2020/07/02 10:08

前提・実現したいこと

前回、ここで(https://teratail.com/questions/274345=カウントが0になったら残りの問題全てを不正解にしたい)で質問をさせていただきました。

そこで正答率を「正解の数/質問の数」で計算するというアドバイスをいただいたのでコードを書き直してみたのですが、全問正解しても正答率が50%になってしまいます。

以下のようにコードを書きました。

const accuracy = score + quizSet.length === 0 ? 0 : score / (score + quizSet.length) * 100;

発生している問題・エラーメッセージ

全問正解してもクイズの正答率が100%にならない。

該当のソースコード

javascript

let currentNum = 0; let score = 0; setQuiz(); btn.addEventListener('click', () => { if (btn.classList.contains('disabled')) { return; } btn.classList.add('disabled'); showResult(); function showResult(){ const accuracy = score + quizSet.length === 0 ? 0 : score / (score + quizSet.length) * 100;  // [正答率の計算 %] if (currentNum === quizSet.length - 1) { //最終問題だったらスコアを表示 scoreLabel.innerHTML = `${quizSet.length} <br> ${score}<br> ${accuracy.toFixed(2)}%`; result.classList.remove('hidden'); } else { //違ったら次の問題へ currentNum++; setQuiz(); } } }); }

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

ku__ra__ge

2020/07/01 17:02

> const accuracy = score + quizSet.length === 0 ? 0 : score / (score + quizSet.length) * 100; このコードは「正解の数/質問の数」には見えませんが、あなたはaccuracyにどのような意図の値を格納するためにこのコードを書いたのですか?
m.ts10806

2020/07/01 20:05

へたに三項演算子使うよりひとつずつ値を見ていった方が確実かと思います。
begine

2020/07/02 01:23 編集

このコードはサイトにあるコードを参考に書きました。 accuracyはテンプレートリテラルで表示させるために格納させると解釈していました。 また、このコードが三項演算子ということも検索で知ったので、自分の知識不足のため的外れな質問をしていたのだとわかり、不快にさせてしまった方は申し訳ありませんでした。
m.ts10806

2020/07/02 01:42

いえ、的外れというのではなく、全体の見通しが良くなくなるし、使いこなすのはそこまで簡単ではないので、いきなりまとまったコードを書くのではなく、素直にひとつずつ仕様通りに流れ通りに書いていったほうが自分にも他者にも優しいコードになるのでは?という話をしてます
begine

2020/07/02 01:51

ありがとうございます、了解しました。 もう一度コードを自分なりに書き直してみたいと思います。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。