2 つの int を double に代入すると、正しい値が生成されないのはなぜですか? 質問する

2 つの int を double に代入すると、正しい値が生成されないのはなぜですか? 質問する

なぜ次のスニペットでは

int a = 7;
int b = 3;
double c = 0;
c = a / b;

c予想どおり、2.3333 ではなく、値 2 になります。aと がbdouble の場合、答えは 2.333 になります。 しかし、 はcすでに double なので、整数でも機能するはずですよね?

それで、なぜint/int=double機能しないのでしょうか?

ベストアンサー1

operator/これは、 2 を受け取ってintを返すの整数除算バージョンを使用しているためです。を返すバージョンをint使用するには、 の少なくとも 1 つをに明示的にキャストする必要があります。doubledoubleintdouble

c = a/(double)b;

おすすめ記事