在Java中,我想要将双精度数转换为整数,我知道如果您这样做:
double x = 1.5;
int y = (int)x;
你会得到y=1。如果你这样做:
int y = (int)Math.round(x);
你可能会得到2。然而,我想知道:由于整数的双精度表示有时看起来像1.9999999998或类似的东西,是否有可能通过Math.round()创建的双精度转换仍然会导致截断向下的数字,而不是我们正在寻找的四舍五入的数字(即:1而不是代码中表示的2)?
(是的,我确实是这样想的: x是否有任何值,其中y将显示x的截断表示而不是舍入表示的结果?)
如果是这样的话:有没有更好的方法让一个双精度数变成一个四舍五入的整数,而不会有被截断的风险?
我想起来了: Math.round(x)返回一个长整型,而不是双精度型。因此: Math.round()不可能返回一个类似于3.9999998的数字。因此,int(Math.round())将永远不需要截断任何内容,并且将始终有效。
https://stackoverflow.com/questions/6468730
复制相似问题