在Java中使用Double类型时出错......这必须如此简单,我几乎感到羞耻,我在这里问它

Jef*_*eff 5 java double rounding division integer-division

好的.我一直在抨击我的头撞墙2个小时,现在试图弄清楚为什么世界double answer = 364/365;上告诉我那answer是0.或者任何其他的双重组合,它只是截断小数而我只是不知道为什么.请帮忙!!!

Sap*_*pph 9

364/365执行整数除法(截断小数).

尝试double answer = 364.0/365;强制它执行浮点除法.

就像是:

double days_in_year = 365;
double answer = 364/days_in_year;
Run Code Online (Sandbox Code Playgroud)

也会工作,因为其中一个操作数不是整数.


Jon*_*Jon 6

你正在采用int类型(364)并除以另一个int类型(365) - 答案将是一个int.然后将其存储在双重型答案中.您可以执行以下操作:

double answer = 364d / 365d;
Run Code Online (Sandbox Code Playgroud)

更多信息:

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

  • +1使用d后缀,这比在结尾添加.0或使用显式强制转换更好(恕我直言),正如所有其他答案所暗示的那样. (3认同)