5

わかった。私は 2 時間ほど頭を壁にぶつけていましたが、なぜ世界が 0double answer = 364/365;だと言っているのかを理解しようとしています。どうして。answerdouble

4

5 に答える 5

9

364/365 は整数除算を実行します (小数点以下を切り捨てます)。

double answer = 364.0/365;浮動小数点除算を実行するように強制してみてください。

何かのようなもの:

double days_in_year = 365;
double answer = 364/days_in_year;

オペランドの 1 つが整数ではないため、同様に機能します。

于 2010-02-16T05:02:33.260 に答える
6

int 型 (364) を取り、別の int 型 (365) で割ると、答えは int になります。これは double 型の回答に格納されます。次のことができます。

double answer = 364d / 365d;

詳細はこちら:

http://mindprod.com/jgloss/division.html

于 2010-02-16T05:03:58.697 に答える
2

二重除算を行う必要があります。現在、Java はそれを整数除算として解釈し、切り捨てられintた .

必要なものは次のとおりです。

double answer = 364 / 365.0;

また

double answer = 364 / (double) 365; 
于 2010-02-16T05:02:45.967 に答える
0

その理由は、Java の整数リテラルのデフォルトの型が でありint、すべての基数演算のすべての結果intが に型キャストされるためintです。したがって、あなたの答えは 0.997 ですが、型キャストすると 0 になります。

(int)0.997  = 0

したがって、次のようにすることができます。

364.0/365.0

また

((float)364)/365
于 2010-02-16T05:06:22.580 に答える