在 Java 中将双精度值转换为整数
在Java中,我想将双精度转换为整数,我知道如果你这样做:
double x = 1.5;
int y = (int)x;
你得到y=1。如果这样做:
int y = (int)Math.round(x);
你可能会得到2。但是,我想知道:由于整数的双重表示有时看起来像1.99999999998或类似的东西,那么通过Math.round()创建的双精度是否仍然会导致截断的数字,而不是我们正在寻找的舍入数字(即:1而不是所表示的代码中的2)?
(是的,我的意思是这样的:x是否有任何值,其中y将显示截断的结果,而不是x的四舍五入表示?
如果是这样:有没有更好的方法将双打变成一个圆润的int,而不会有截断的风险?
图了一些东西:Math.round(x)返回一个长整型,而不是一个双精度型。因此:Math.round() 不可能返回一个看起来像 3.9999998 的数字。因此,int(Math.round())将永远不需要截断任何东西,并且将永远有效。