在Java中,我想将一个双精度数转换为整数,我知道可以通过以下方式实现:
double x = 1.5;
int y = (int)x;
如果你这样做,就会得到y=1:
int y = (int)Math.round(x);
你可能会得到2。然而,我在想:由于整数的双精度表示有时看起来像1.9999999998或其他类似的数字,是否有可能通过将 Math.round() 创建的 double 转换为 int 仍然会导致被截断的数字,而不是我们要找的四舍五入的数字(例如:在代码中表示为1而不是2)?
(是的,我的意思是这样:是否存在任何x的值,使得y将显示x的被截断而不是四舍五入的表示的结果?)
如果是这样:是否有更好的方法将double转换为四舍五入的int,而不会冒险截断?
想通了一些事情:Math.round(x)返回一个long而不是double。因此, Math.round() 不可能返回看起来像3.9999998的数字。因此,int(Math.round())永远不需要截断任何内容,总是有效的。