1.doubleタイプ

Java は、double実数 (小数) を扱うための型を提供します。8 bytesメモリ (型の 2 倍) を占有し、から までintの範囲の値を格納できます。比較のために、この型はから までの範囲の値を格納できます。-1.7*10308+1.7*10308int-2*109+2*109

実数の場合、小数点以下は小数点の後に書きます。たとえば、123.456、2.5、100.00、0.01 などです。コンピュータがそのような数値を扱うとき、私たちはそれらの数値を浮動小数点数と呼びます。

ちなみに、型に加えて、型(サイズはわずか 4 バイト)doubleもあります。floatその名前は浮動小数点に由来します。名前のdouble由来はdouble floatです。A は、: vs のdouble2 倍の大きさです。倍精度浮動小数点数とも呼ばれます。float8 bytes4


2.double型の作成

double 型は実数を格納するために使用されます。実数を格納できる変数をコードで作成するには、次のようなステートメントを使用する必要があります。

double name;
doubleタイプの作成

ここで、name は変数の名前です。例:

声明 説明
double price;
実際のprice変数が作成される
double weight;
実際のweight変数が作成される
double lightSpeed;
実際のlightSpeed変数が作成される

型と同様に、短縮表現を使用して複数の変数を同時にint作成できます。double

double name 1, name 2, name 3;
double複数の変数の作成

さらに、すぐに値を代入することもできます。

double name 1 = value 1, name 2 = value 2, name 3 = value 3;
double複数の変数の作成と初期化

例:

声明 ノート
double price = 5.0;
変数ストア5.0
double weight = 2;
変数ストア2.0
double x = 1.0, y = 2.0, z = 3.0;

3. 整数と実数の代入

int整数が変数にのみ割り当てられ、実数が変数にのみ割り当てられるのは問題ですdouble。2 種類の数値の間で変換できるようにしたいと考えています。Java はこの機能を提供します。

まず、実数と整数の両方をdouble変数に割り当てることができます。整数を割り当てる場合は、単純に実数に変換されます。もちろん、プロセス中にある程度の精度が失われる可能性があります。

声明 ノート
double price = 5.0;
変数ストア5.0
double weight = 2;
変数ストア2.0
int t = 1000;
double x =  t * t;

変数xストア1000000.0

第 2 に、整数と実数が式に含まれている場合、まず整数が実数に変換され、その後で初めて他の実数との演算が実行されます。

声明 ノート
int t = 1000;
double x = t * 5.0;

変数xストア5000.0
System.out.println(5 * 2);
10画面に番号が表示されます
System.out.println(5 * 2.0);
10.0画面に番号が表示されます

最後に、変数に実数を割り当てることもできますint。これを行うと、実数の小数部分が破棄され、数値は最も近い整数に切り捨てられます。

さらに、コンパイラは、プログラマに対し、何が起こっているかを明示的に文書化することを要求します (小数部分が削除されていることを他のプログラマが確実に理解できるようにするため)。一般に、このような変換はコードでは次のようになります。

integer_variable = (int)(real_number);
int変数に実数を代入する

例:

声明 ノート
int x = (int)(5.5);
変数xストア5
double a = 5.999;
int x = (int)(a);
変数xストア5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
変数xストア11


4. Java での整数と実数の除算

整数を整数で割った場合、剰余は常に破棄されます。では、どのようにして割れば得られるのでしょ522.5?

最初は、次のオプションが正しいように見えます。

double d = 5 / 2;

しかし、それはそれほど単純ではありません。ここでの問題は、Java マシンが最初に の値を計算し5 / 2、その後でその結果をd変数に代入することです。そしてその5 / 2演算は整数の除算です。これは、より正確には、次の内容d が含まれることを意味します。22.0

正しい解決策は、除算に含まれる数値の少なくとも 1 つを実数(つまり、小数点付き) として記述することです。

double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;

それぞれの式には、次のものd が含まれます2.5

しかし、変数を扱う場合はどうなるでしょうか? 次のようなコードがある場合はどうなるでしょうか?:

int a = 5;
int b = 2;
double d = a / b;

ここには巧妙な (そして明白な) 解決策があります。変数に 1 を実数として乗算して、Java マシンに変数を強制的に実数に変換させます ( 1.0)

int a = 5;
int b = 2;
double d = a * 1.0 / b;

乗算と除算は同じ優先順位を持ち、左から右に実行されることに注意してください。つまり、1.0 をどこで掛けるかが重要になります。

例:

声明 実行の順序 結果
int a = 5;
int b = 2;
double d = 1.0 * a / b;
(1.0 * a) / b; 2.5
int a = 5;
int b = 2;
double d = a * 1.0 / b;
(a * 1.0) / b; 2.5
int a = 5;
int b = 2;
double d = a / b * 1.0;
(a / b) * 1.0; 2.0