关于自动舍入导致java从double到integer?

roc*_*anu 0 java double integer rounding

Java中以下代码的输出是3.0.

为什么不呢3.3333333...

double a = 10 / 3;
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

Duk*_*ing 6

因为int / int返回int(不管你之后指定的是什么).

所以10 / 3返回3(整数除法向下舍入).

这只会转换为double.

要解决此问题,请将其中一个值设为a double(所以它double / int返回a double):

double a = 10.0 / 3;
Run Code Online (Sandbox Code Playgroud)

要么

double a = (double)10 / 3;
Run Code Online (Sandbox Code Playgroud)