前提
javaで電卓を作っています。その際に
1の場合→1
1.1の場合→1.1
1.11の場合→1.11
と出力させたいです。
しかし今現状は
1の場合→1.0
1.1の場合→1.1
1.11の場合→1.11
と出力されてしまいます。
該当のソースコード
java
1ArrayList<Double> number = new ArrayList<Double>(); 2BigDecimal bigAns = new BigDecimal(1+0); 3bigAns = bigAns.setScale(2, RoundingMode.DOWN); 4//1.00 5System.out.println(bigAns); 6//1.0 7System.out.println(Double.parseDouble(String.valueOf(bigAns))); 8//numberは入力した数字を格納する 9number.set(i, Double.parseDouble(String.valueOf(bigAns)));
Doubleでnumberの中身を定義する限り避けられませんが、それは良いのでしょうか。
そうなのですか?
Double型ではないと小数点を入れられないと思ったのですが。。
このプログラムを改変してもいいので、どのようにしたらしたいことが実現できるのか教えてください
要望だけ書いて説明が不充分な気がするのですが、単に表示、出力の問題で、小数点以下が全て0ならば、それらは切り捨てて出力したいと言うことでしょうか。
> Double型ではないと小数点を入れられないと思ったのですが。。
整数部と小数部を分けて持つくクラスを作れば整数型のみで計算することも可能です。
Double よりもパフォーマンスが落ちるため、それが使えるかどうかは場合によります。
今回の場合は大量の計算をするわけではないので、それでも十分機能します。
しかし表示の問題だけであるなら、小数点以下が 0 であるかどうかで条件分岐するのが簡単でしょう。
小数点以下を切り捨てたものと比較して一致するなら 0 です。
dodox86
はいそうです。整数のみの計算は.0が邪魔なので、それを出力部分のみでいいので排除したいです
愚直に
1.0なら1を出力
それ以外はそのまま出力
とすれば良いのでは。
回答2件
あなたの回答
tips
プレビュー