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

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

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

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

Q&A

解決済

3回答

1796閲覧

BigDecimal 四捨五入 使い方

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2019/08/17 14:17

前提・実現したいこと

BigDecimalを使って小数第〇位まで四捨五入させたい。初心者な質問ですいません。

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

ローカル変数 bd1 の値は使用されていませんと出てしまいます。
エラーメッセージ
ローカル変数bd1の値は使用されていません

該当のソースコード

Java

1import java.math.BigDecimal; 2import java.math.RoundingMode; 3 4public class HealthCheckLogic { 5 public void execute(Health health) { 6 7 // BMIの計算 8 double height = health.getHeight(); 9 double weight = health.getWeight(); 10 double bmi = 10000 * (weight / height / height); 11 health.setBmi(bmi); 12 BigDecimal bd = new BigDecimal(bmi); 13 BigDecimal bd1 = bd.setScale(2, RoundingMode.HALF_UP);

試したこと

BigDecimal bd = new BigDecimal.valueOf(bmi);
doubleValue()も使いましたが、結果は同じでした。

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

eclipse
Tomcat8

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

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

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

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

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

swordone

2019/08/17 14:35

「結果は同じでした。」といわれても、結果って何のことか分からないです。
退会済みユーザー

退会済みユーザー

2019/08/17 15:17

すみません。ローカル変数bd1の値は使用されていませんというエラーです。
swordone

2019/08/17 18:55

最終的な目標がわかりません。四捨五入してどうしたいのか?
退会済みユーザー

退会済みユーザー

2019/08/18 03:29

bmiの計算結果を小数第三位で四捨五入して第二位まで表示させたいと思っています。今の自分の理解では、bdにbmiの計算結果が格納されており、bd1にbdの小数を四捨五入した値が入っていると思っていたのですが、そこが間違いということでしょうか?
swordone

2019/08/18 03:55

なら、それを出力すればいいだけでは? 何をそんなにウジウジ言ってるのか分かりません。
guest

回答3

0

ローカル変数bd1の値は使用されていません

これはエラーではなく警告文です。
メソッドのローカル変数が宣言されているにも関わらず、その変数をメソッド内のどこでも使っていないことによる警告です。メソッド内で使いたいからこそのローカル変数なのであって、それをどこでも使っていないのはおかしくないですか?とコンパイラが警告してくれているのです。
警告を消すだけなら、その変数を何かのメソッドに渡すか、変数のメソッドを起動するかすればとりあえず消えます。

java

1// 変数を何かのメソッドに渡す 2System.out.println(db1); 3 4// 変数のメソッドを起動する 5// 注:この結果を格納する変数を宣言するとまた同じ警告が出る 6db1.doubleValue();

ただ、コードの流れから言ってこれは本質的にやりたいことではないですよね。
ここでいくらいじってもhealthという謎の変数に渡されたbmiの値に全く影響はありませんから。
何をしたいのかよく確認してください。

投稿2019/08/18 01:41

swordone

総合スコア20651

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

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

0

bd1というBigDecimal型の変数を新たに宣言する必要がないことに気づき、
bd = bd.setScale(2, RoundingMode.HALF_UP);
とすることで解決しました。
モデルやサーブレットのこともお伝えしておらず、自分のやりたいことがうまく伝えられなかったにも関わらずお答えくださりありがとうございます。
以後質問の質もあげていけるよう頑張りたいと思いますので、また機会がありましたらよろしくお願いします。

投稿2019/08/20 03:15

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

ローカル変数bd1の値は使用されていません

変数への代入文はあるけど、その変数を読み取る処理がないだけでは

投稿2019/08/17 14:38

編集2019/08/18 01:44
gentaro

総合スコア8949

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

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

退会済みユーザー

退会済みユーザー

2019/08/17 15:19

回答ありがとうございます。変数の読み取り処理というのは、System.outなどの値の出力文がないということでしょうか?
gentaro

2019/08/17 15:22

最終行からひとつ上の行の BigDecimal bd = new BigDecimal(bmi); のbdは、最終行の BigDecimal bd1 = bd.setScale(2, RoundingMode.HALF_UP); をみればbdが使われてることがわかります。 では、同じようにbd1がどこかで使われてますか?
momon-ga

2019/08/19 07:23

yes < 変数の読み取り処理というのは、System.outなどの値の出力文がないということでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問