Math.round MAX可返回值

cub*_*rth 6 java

我正在使用Math.round,我发现它不会返回任何大于(2 ^ 32/2)-1的值,但文档声明它可以/将返回长值,即2 ^ 64 ...有一个下面的代码片段.

long bTmp = (long)Math.round(4294967296L);
System.out.println(bTmp);
System.out.println(Long.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)

哪个输出:

2147483647
9223372036854775807
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Sim*_*son 11

它调用的重载Math.round()需要a float并返回一个int.请参阅 javadoc.

尝试:

Math.round((double) 4294967296L)
Run Code Online (Sandbox Code Playgroud)

  • 只是添加一些关于做什么的信息:http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.2默认情况下,从浮动.要使用double强制执行该行为,必须对其进行转换. (2认同)