3児のパパそしてエンジニア

33歳3児のパパの家の事やエンジニアとしての事をつらつらと書きます

java 少数計算

別に何てことない内容ですが。

 

 

一応

忘れる前に書いておきます。

 

 

 

 

ある時↓

少数の計算か。何が良いんやろ?

調べるのめんどくさ!

教えてー!!

 

 

適当に聞いてみた。

・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型を使ってるのが大事!!

まじで!!

これじゃないと正確な値になりません!!

 

 

ディバイドの引数は調べてくださいな(>_<)

 

 

BigDecimal

返り値の型を指定して返せるねんて!

便利ー!!

 

int             intValue()
long         longValue()
float         floatValue()
double     doubleValue()

 

 

 

これで少数の計算はオッケイ!!

 

 

追記

 

計算した値を

そのまま表示するだけならば

.toString

で見たままを出すのが良さそうでした。

少数第◯位までを表示にするのであれば

.scale

第一引数に 第◯位までの◯を。

第二引数に 四捨五入などの丸め処理方法を記述で完了です。   

 

 

ちなみにBigDecimal

Java9からは非推奨だとか。。。