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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

610閲覧

売れ残った量を出力する方法で分からない部分がある

NIKONIKONIKONIK

総合スコア83

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/11/05 09:36

編集2019/11/05 11:37

問題 : 売れ残った量を出力する。
イメージ説明

入力例1:m=1,p=80,q=40
実行結果1:0.12 //出力できました。

入力例2:m=10,p=31,q=52
実行結果2: 3.312 //4.65と出力されます。

計算方法はあってると思うのですが、どこが違うのか見当がつかない状況です。

分からないこと
1.実行結果1と計算方法は同じはずなのに、実行結果2で得たい数字が得られない。

2.実行結果1では 0.12まで出力ですが、実行結果2では3.312まで出力しています。小数点以下の数字の分岐はどうやってやりますか?

java

1import java.util.*; 2 3 4public class Main { 5 public static void main(String[] args) { 6 7 Scanner sc = new Scanner(System.in); 8 int m = sc.nextInt(); 9 int p = sc.nextInt(); 10 int q = sc.nextInt(); 11 if(p==100){ 12 q=0; 13 } 14 if(1 <= m && m<= 1000){ 15 if(0 <= p && q <= 100){ 16 double s = m - (100 - p) * 0.01; //変更 17 double ss = s * (q * 0.01); 18 double sss = s - ss; 19 System.out.println(String.format("%.1f", sss)); 20 } 21 } 22 23 } 24}

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

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

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

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

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

guest

回答2

0

sss : 売れ残った量
ss : お惣菜販売量
と思われますが、
s : お惣菜の量なら、計算式が誤っています。

double s = m - (p * 0.01);

仕入れ量m(kg) と 販売割合(比率) の引き算は意味がありません。

投稿2019/11/05 10:19

dsuzuki

総合スコア1682

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

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

NIKONIKONIKONIK

2019/11/05 11:40

m * (100 - p ) * 0.01 に修正しました。 出力結果1:0.12 // 解決 出力結果2:3.31 //未解決 3.312まで出したいのですが、出力結果1と出力結果2とでは小数点以下の数が違っていて、何か方法はありますでしょうか?
guest

0

ベストアンサー

m が 偶然 1になっているので気づきにくいのだと思いますが、
売れ残り = m * ( 100 - p% ) です。

投稿2019/11/05 10:23

A-pZ

総合スコア12011

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

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

NIKONIKONIKONIK

2019/11/05 10:57

なるほどです。 指摘された部分を変更しました。 ですが、出力結果が331.2となり、出力結果(正解)である3.312になりません。 計算方法はあっていると思うのですが、四捨五入のあたりが間違ってるのでしょうか? 数学弱くてすいません。
NIKONIKONIKONIK

2019/11/05 11:40

m * (100 - p ) * 0.01 に修正しました。 出力結果1:0.12 // 解決 出力結果2:3.31 //未解決 3.312まで出したいのですが、出力結果1と出力結果2とでは小数点以下の数が違っていて、何か方法はありますでしょうか?
A-pZ

2019/11/05 11:55

100 - p% の部分はパーセント表示なので、詳しく書くとすれば、( 100 - p ) / 100 や * 0.01 ですね。 こうなるのでは。 double s = (100 - p) * 0.01 * m; double ss = s * (q * 0.01); double sss = s - ss; System.out.println(String.format("%.3f", sss));
NIKONIKONIKONIK

2019/11/05 15:45

この場合、0.120となってしまい、実行結果0.12にはなりません。
NIKONIKONIKONIK

2019/11/05 15:46

正解でした!!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問