Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将double四舍五入到最接近的整数,然后转换为float?_Java_Rounding - Fatal编程技术网

Java 如何将double四舍五入到最接近的整数,然后转换为float?

Java 如何将double四舍五入到最接近的整数,然后转换为float?,java,rounding,Java,Rounding,我正在使用java.util.Random生成一个随机高斯函数。我需要把这个高斯函数转换成一个浮点值。然而高斯函数是一个双精度函数,所以我需要一些方法来进行任意一轮运算,然后将其转换为浮点。我需要四舍五入到最接近的整数,四舍五入。这是我的问题:怎么做?float b=(float)Math.ceil(a) 或 float b=(float)数学四舍五入(a) 取决于您的意思是“四舍五入到最接近的整数”(四舍五入)还是“四舍五入”(ceil) 在将双精度转换为浮点值时要小心精度的损失,但这不应该是

我正在使用java.util.Random生成一个随机高斯函数。我需要把这个高斯函数转换成一个浮点值。然而高斯函数是一个双精度函数,所以我需要一些方法来进行任意一轮运算,然后将其转换为浮点。我需要四舍五入到最接近的整数,四舍五入。这是我的问题:怎么做?

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);
    }
}