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

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

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

Scratchは、MITメディアラボが開発した子ども向けプログラミング言語。コードを記述することなくブロックを組み合わせてプログラミングを行うビジュアルプログラミング言語です。Scratch2.0からは、Web上でのプログラミングも可能になっています。

Q&A

1回答

1914閲覧

Scratchで小数同士のかけ算をした時の解答の桁数がおかしい

veneno

総合スコア15

Scratch

Scratchは、MITメディアラボが開発した子ども向けプログラミング言語。コードを記述することなくブロックを組み合わせてプログラミングを行うビジュアルプログラミング言語です。Scratch2.0からは、Web上でのプログラミングも可能になっています。

0グッド

0クリップ

投稿2021/04/16 16:59

編集2021/04/16 17:02

Scratchで少数同士のかけ算をした時の解答の桁数が表示とは
全く違う桁数になります。
現在分かっているものは「0.2、0.4、0.7、0.8」です。
例えば「0.2×0.2」であれば「0.04」で4桁となるところが「19桁」と
返ってきます。
どなたかこのような症状についての解決策をご存じの方はアドバイス
お願いします。

イメージ説明

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

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

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

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

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

guest

回答1

0

Scratchで少数同士のかけ算をした時の解答の桁数が表示とは全く違う桁数になります。

桁数、と言うよりかは「小数を文字列として見た時の文字数」ですね。 Scratch 3.0はnode.js上のJavaScriptで動いているので、演算はJavaScriptで浮動小数点数を用いた計算になります。0.2 * 0.2はJavaScriptで計算すると0.04000000000000001となり、文字列として見ると19文字になります。この文字数が出ているのでしょう。全てが表示されていないのはScratchの表示の仕様によるものだと思います。

試しに0.1から0.8まで試してみると、JavaScriptでは以下のようになりました。(paiza.ioで試しました)

JavaScript

1let v = 0; 2v = 0.1 * 0.1; 3console.log(v); 4v = 0.2 * 0.2; 5console.log(v); 6v = 0.3 * 0.3; 7console.log(v); 8v = 0.4 * 0.4; 9console.log(v); 10v = 0.5 * 0.5; 11console.log(v); 12v = 0.6 * 0.6; 13console.log(v); 14v = 0.7 * 0.7; 15console.log(v); 16v = 0.8 * 0.8; 17console.log(v);
0.010000000000000002 0.04000000000000001 0.09 0.16000000000000003 0.25 0.36 0.48999999999999994 0.6400000000000001

「桁数がおかしい」とする原因としては上記で挙げたことがそうですが、肝心の解決方法はScratchの表示の問題もあり、有効で簡単なものは無さそうです。算数の手計算での方法のように、最初は整数で計算し、かけられる数、かける数それぞれの小数点以下の桁数を合算し、その桁数で答えの小数点の位置を調整する、とか。必要に応じて小数点以下の有効桁数を自力で調整することも必要かもしれません。「Scratch 小数 浮動小数点数」などのキーワードでWEB検索もしてみてください。その際は、Scratch 3.0より前のバージョンの情報では役に立たない可能性があるので、併せてご注意ください

投稿2021/04/16 18:37

編集2021/04/16 18:47
dodox86

総合スコア9256

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問