Javaの少数

アイキャチ画像
2023/04/15
2023/04/15
kjBGRd2B

Javaの少数型の扱い方について、簡単にご紹介します。

Javaで扱える小数について

Javaでは使う型によって扱うことができる、少数の範囲が違います!

※前回ご紹介した整数の扱いの時と一緒ですね。

またJavaの少数は計算する時、特徴があるのでその部分についてもご紹介します。

ペンタ

早速Javaではどのような小数型があるのか確認しよう!

最も基本的な少数型

まず初めに紹介する小数型は『double型』です!

このdouble型はJavaで整数を扱い際に最も多く使われる型となっています。

型の宣言は下記の通りです。

double pi = 3.1415D;

duuble型を使う時には、コンパイラーにduuble型であることを知らせるために数字の後ろに『D』もしくは『d』をつけます。

※Javaでは標準でコンパイラーが『D、d』を自動的につけてくれます。

チュンすけ

これを知らなくて初めは苦労したよ、、、

小数を扱うと決まっていて細かいことを気にしなければ、この型でいいかもしれません。

実際コートを書いていても頻繁にdouble型は使用する他、扱える範囲も広いため困ることは少ないとボク自身感じています。

double型の扱える整数範囲

先ほど少し触れましたが、Javaの整数型にはそれぞれ扱える範囲が決まっています。

Javaのdouble型の範囲は下記の範囲です。

最小最大ビット数
±1.79769313486231570E+308±4.94065645841246544E-32464bit

ここで最大、最小でよくわからない記号が出てきましたね。

これは左辺の数値を10のn乗倍するという意味で、アバウトではありますが限りなく0に近い数値から限りなく巨大な数値までを表現することができます。

例えば、、、

double sample = 1.192e3;

上記は『1192』を浮動小数で表現したサンプルです。

みてわかる通り、左辺の桁が右辺の数値分ずれてるのがわかると思います。

double sample = 1.192e-3;

上記は『0.001192』を浮動小数で表現したサンプルです。

マイナスがつくことでマイナス10乗倍して数値を表現できます。

ペンタ

とても便利だね!

計算の誤差

一見とても便利そうな浮動小数型ですが、ある困った困ったことが1つだけあります。

正確な計算ができないこと!

これは困りますよね、、、

実際にどんな感じになるか確認してみましょう。

double doubleValue1 = 1.0d;
double doubleValue2 = 0.9d;
double resultValue = doubleValue1 - doubleValue2;

このコードですが、普通は『0.1』になるはずです、、

ですがコードを実行すると結果は下記のようになります。

0.09999999999999998
チュンすけ

なんでだーー

これは浮動小数型では正確な計算ができない特性があるためです。

仕組みに関してはここでは触れませんが、仕組み上仕方がなく且つJavaだけでなくプログラム全般でこのようなことが起きます。

※C言語でも、JavaScriptでもなんでもそうです

なのでこのこのような性質があることは頭の片隅に置いておきましょう。

もう一つの小数型

先ほど紹介したdouble型と同じく小数を扱える型がもう一つあります。

float型も小数を扱える型です!

double型と違い、32bitの型なので扱える範囲は狭くなっています。

Javaのdouble型の範囲は下記の範囲です。

最小最大ビット数
±3.40282347E+381.40239846E-4532bit

型の宣言は下記の通りです。

float pi = 3.1415F;

float型を使う時には、コンパイラーにfloat型であることを知らせるために数字の後ろに『F』もしくは『f』をつけます。

double型の時と違い、自動的に『F、f』をつけてくれないため注意して使用しましょう。

※fをつけていない場合は、コンパイラーに怒られます

扱える数値の範囲以外は、double型と同じため使い分けが難しい型となっています。

まとめ

いかがでしたか?

今回はJavaの小数型についての紹介でした。

最後に要点をまとめてみます。

※スマホの方はスライドすることで全て閲覧することが可能です
最小最大ビット数
double±1.79769313486231570E
+308
±4.94065645841246544E
-324
64bit
float±3.40282347E+381.40239846E-4532bit
ペンタ

型は扱うデータの役割によって使い分けをしよう!

  • 基本的にはdouble型
  • 計算をする時は正確ではない場合がある

最低限Javaで数値を扱う時は上記2つを意識しておくといいかと思います。