我有以下代码:
int i = (int) 0.72;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
0
Run Code Online (Sandbox Code Playgroud)
我想象变量i应该具有值1 (因为0.72> 0.5 => 1),为什么不是这种情况?
(我想,当转换为int时,它只是在逗号之后删除十进制数字,而不是考虑到舍入;所以我可能必须自己处理它?)
正确,转换为int只会截断数字.你可以做这样的事情来得到你想要的结果:
int i = (int)Math.round(0.72);
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
例如,这将打印1表示0.72和0表示0.28.