在Java中,我想将double转换为整数,我知道如果你这样做:
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的圆形表示?)
如果是这样的话:有没有更好的方法将double变为圆形int而不会有截断的风险?
想象一下:Math.round(x)返回一个long,而不是double . 因此:Math.round()不可能返回一个看起来像3.9999998的数字 . 因此,int(Math.round())将永远不需要截断任何内容并始终有效 .
4 回答
不,
round()
将始终将您的double舍入到正确的值,然后,它将被强制转换为long
,这将截断任何小数位 . 但在四舍五入后,将不会有任何小数部分 .以下是Math.round(double)的文档:
对于
Double
到int
的数据类型,您可以使用以下命令:解决了我的目的 .