我使用java.util.Random生成随机高斯。我需要将此高斯转换为浮点值。然而高斯是一个双,所以我需要一些方法来圆或然后将其转换为浮点数。我需要四舍五入到最近的整数,四舍五入。这是我的问题:如何?
答案 0 :(得分:54)
float b = (float)Math.ceil(a);
要么
float b = (float)Math.round(a);
取决于您是指“舍入到最接近的整数”(圆形)还是“向上舍入”(ceil)。
小心将double转换为float的精度会降低,但这不应成为问题。
答案 1 :(得分:8)
这是一个简单的例子:
public class One {
/**
* @param args
*/
public static void main(String[] args) {
double a = 4.56777;
System.out.println( new Float( Math.round(a)) );
}
}
结果和输出将是: 5.0
最接近的上限浮动到起始值double a = 4.56777
在这种情况下,建议使用round,因为它接收double
值并提供整个long
值
此致
答案 2 :(得分:3)
答案 3 :(得分:0)
值得的是:
如下表所示,任何给定输入的最接近整数可以使用Math.ceil或Math.floor计算,具体取决于输入与下一个整数之间的距离
+-------+--------+
| input | output |
+-------+--------+
| 1 | 0 |
| 2 | 0 |
| 3 | 5 |
| 4 | 5 |
| 5 | 5 |
| 6 | 5 |
| 7 | 5 |
| 8 | 10 |
| 9 | 10 |
+-------+--------+
private int roundClosest(final int i, final int k) {
int deic = (i % k);
if (deic <= (k / 2.0)) {
return (int) (Math.floor(i / (double) k) * k);
} else {
return (int) (Math.ceil(i / (double) k) * k);
}
}