Java 如何将double四舍五入到最接近的整数,然后转换为float?
我正在使用java.util.Random生成一个随机高斯函数。我需要把这个高斯函数转换成一个浮点值。然而高斯函数是一个双精度函数,所以我需要一些方法来进行任意一轮运算,然后将其转换为浮点。我需要四舍五入到最接近的整数,四舍五入。这是我的问题:怎么做?Java 如何将double四舍五入到最接近的整数,然后转换为float?,java,rounding,Java,Rounding,我正在使用java.util.Random生成一个随机高斯函数。我需要把这个高斯函数转换成一个浮点值。然而高斯函数是一个双精度函数,所以我需要一些方法来进行任意一轮运算,然后将其转换为浮点。我需要四舍五入到最接近的整数,四舍五入。这是我的问题:怎么做?float b=(float)Math.ceil(a) 或 float b=(float)数学四舍五入(a) 取决于您的意思是“四舍五入到最接近的整数”(四舍五入)还是“四舍五入”(ceil) 在将双精度转换为浮点值时要小心精度的损失,但这不应该是
float b=(float)Math.ceil(a)代码>
或
float b=(float)数学四舍五入(a)代码>
取决于您的意思是“四舍五入到最接近的整数”(四舍五入)还是“四舍五入”(ceil)
在将双精度转换为浮点值时要小心精度的损失,但这不应该是一个问题。下面是一个简单的例子:
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
距起始值双精度a=4.56777
最近的上限浮点值
在这种情况下,建议使用round,因为它接受双
值,并提供整个长
值
考虑到价值:
根据输入与下一个整数之间的距离,可以使用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(最终int i,最终int k){
int deic=(i%k);
如果(deic)“我需要将此高斯值转换为浮点值。”…“我需要四舍五入到最接近的整数”…您想要浮点还是整数?您想要四舍五入,还是要四舍五入到最接近的整数?您想要四舍五入到最接近的整数,还是要四舍五入?这些都是不兼容的语句。例如,您要如何四舍五入3.4?最接近的整数是3,四舍五入是4。谢谢您的回复,这正是我想要的(float)Math.round(a)
在时间和空间上的效率都是原来的数倍。同意。只有在需要访问超类对象的继承方法时,才应该使用float a=new float(“3.14”)
,例如clone、toString、equals
等等。float a=(float)3.14;
在面向对象的方法中表现得非常糟糕。我不知道什么是Float a=new Float(“3.14”)
与此有关。OP、我和你都没有提到过它,也没有提到过OOP。这是你文章的一个支持论点!是的,铸造浮动是有效的,但浮动包装有它的好处,只是想提醒大家,任何硬币都有两面。致意。但它不支持我的文章和部分关于OOP的说法与此相矛盾。下定决心吧。
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);
}
}