別に何てことない内容ですが。
一応
忘れる前に書いておきます。
ある時↓
少数の計算か。何が良いんやろ?
調べるのめんどくさ!
教えてー!!
適当に聞いてみた。
・double
・float
・long
・一旦sql使って
とかって色々言われました。
ダブルね ふむふむ、でもなぁ。
フロートか ほぉほぉ、でもなぁ。
ロング?は?おまはんに聞いたのが間違いでした。寝とけ。
一旦sqlか。んー、ただの計算にコネクションとるのもなぁ。。それってセンスなくなくない?
もうええわ、
Googleせんせーい!
はーい
びっぐでしまるーーー。
解決しました。さすが!
BigDecimalを使えばいいんやって!!
で、計算の仕方ですが
+ 、-、*、/ 等は使用しないで!
足し算が add()
引き算が subtract()
掛け算が multiply()
割り算が divide()
を使えば良いらしい!!
こんな感じ!
BigDecimal a = new BigDecimal("2.0");
BigDecimal b = new BigDecimal("2.0");
BigDecimal c = new BigDecimal("3.0");
//足し算(2.0 + 2.0)
double val1 = a.add(b).doubleValue();
//引き算
(2.0 - 2.0) double val2 = a.subtract(b).doubleValue();
//掛け算(2.0 × 3.0)
double val3 = b.multiply(c).doubleValue();
//割り算(2.0 ÷ 3.0 を小数第3位で切上げ)
double val4 = a.divide(c, 3, BigDecimal.ROUND_HALF_UP).doubleValue();
初めの宣言の部分なんやけど
引数にString型を使ってるのが大事!!
まじで!!
これじゃないと正確な値になりません!!
ディバイドの引数は調べてくださいな(>_<)
返り値の型を指定して返せるねんて!
便利ー!!
int intValue()
long longValue()
float floatValue()
double doubleValue()
これで少数の計算はオッケイ!!
追記。
計算した値を
そのまま表示するだけならば
.toString
で見たままを出すのが良さそうでした。
少数第◯位までを表示にするのであれば
.scale
で
第一引数に 第◯位までの◯を。
第二引数に 四捨五入などの丸め処理方法を記述で完了です。
ちなみにBigDecimalは
Java9からは非推奨だとか。。。