我需要在JAVA中将双值转换为int值,但是数值必须总是舍入。即99.99999999->99。
发布于 2018-03-15 14:35:32
转换为int隐式删除任何小数点。不需要调用Math.open()(假设为正数)
简单地键入(Int),例如:
System.out.println((int)(99.9999)); // Prints 99
尽管如此,它确实有一个不同的行为Math.floor
向负无穷远的方向旋转
发布于 2018-03-15 15:12:14
要将一个double转换为int并将其四舍五入到最接近的整数(即不同于典型的,(int)(1.8)
并且(int)(1.2)
它们都会向下舍入到 0并返回1
),只需将0.5添加到double
将要转换的值即可int
。
例如,如果我们有
double a = 1.2;
double b = 1.8;
然后,下面的x和y的类型转换表达式将返回下舍入值(x = 1
和y = 1
):
int x = (int)(a); // This equals (int)(1.2) --> 1
int y = (int)(b); // This equals (int)(1.8) --> 1
但是通过给每一个加0.5,我们将获得我们在某些情况下(和)可能需要的四舍五入到最接近整数的结果:x = 1y = 2
int x = (int)(a + 0.5); // This equals (int)(1.8) --> 1
int y = (int)(b + 0.5); // This equals (int)(2.3) --> 2
这种方法也可以让你控制的阈值,在其double
被四舍五入后(int)
类型转换。
(int)(a + 0.8);
以类型转换。这只会(int)a + 1
在小数值大于或等于0.2时结束。也就是说,通过double
在类型转换之前加上0.8,10.15和10.03将在(int)
转换后降低到10 ,但是10.23和10.7将被舍入到11。
https://stackoverflow.com/questions/-100003621
复制相似问题