Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 四舍五入_Java_Decimal_Rounding - Fatal编程技术网

Java 四舍五入

Java 四舍五入,java,decimal,rounding,Java,Decimal,Rounding,这在Java中是如何实现的 我有一个浮点数,我想把它四舍五入到最近的一个浮点数 例如: 1.1应四舍五入为1.0 1.3应四舍五入为1.5 2.5应四舍五入为2.5 3.223920应四舍五入至3.0 编辑:此外,我不仅想要字符串表示,我还想要一个实际的浮点值,以便在这之后使用。@SamiKorhonen在评论中说: 乘二,四舍五入,最后除以二 这就是代码: public static double roundToHalf(double d) { return Math.round(d

这在Java中是如何实现的

我有一个浮点数,我想把它四舍五入到最近的一个浮点数

例如:

1.1应四舍五入为1.0

1.3应四舍五入为1.5

2.5应四舍五入为2.5

3.223920应四舍五入至3.0


编辑:此外,我不仅想要字符串表示,我还想要一个实际的浮点值,以便在这之后使用。

@SamiKorhonen在评论中说:


乘二,四舍五入,最后除以二

这就是代码:

public static double roundToHalf(double d) {
    return Math.round(d * 2) / 2.0;
}

public static void main(String[] args) {
    double d1 = roundToHalf(1.1);
    double d2 = roundToHalf(1.3);
    double d3 = roundToHalf(2.5);
    double d4 = roundToHalf(3.223920);
    double d5 = roundToHalf(3);

    System.out.println(d1);
    System.out.println(d2);
    System.out.println(d3);
    System.out.println(d4);
    System.out.println(d5);
}
输出:

1.0
1.5
2.5
3.0
3.0

一般的解决办法是

public static double roundToFraction(double x, long fraction) {
    return (double) Math.round(x * fraction) / fraction;
}
在你的情况下,你可以这样做

double d = roundToFraction(x, 2);
四舍五入至小数点后两位

double d = roundToFraction(x, 100);

虽然它不是那么优雅,但您可以创建自己的Round函数,类似于以下内容(它适用于正数,需要添加一些内容以支持负数):

公共静态双半圆形(双倍数字){
双差=数字-(整数)数字;
if(diff<0.25)返回(int)数;
否则,如果(差异<0.75)返回(整数)数字+0.5;
else返回(int)编号+1;
}

乘以2,四舍五入,最后除以2我在谷歌上尝试了无数不同的输入,但没有任何东西给我那个帖子。@user1513171我只是用谷歌搜索:那样的话,SOFI给了我这么多帖子用谷歌搜索:但不管怎样。谢谢你的回答。谷歌忽略了标点符号,所以你基本上是在搜索“在java中四舍五入到最接近的5”:我喜欢这段代码。。。我会把我的存货放进去。。谢谢你一定要记住数学。四舍五入(-83.25*10)/10f和数学。四舍五入(83.25*10)/10f会给你-83.2和83.3的结果。如果我想四舍五入到最接近的0.75呢?我会通过4/3而不是2分吗?Thanks@theprogrammer这将是0.75的最接近倍数,例如1.5、2.25、3.00。如果您想要以0.75结尾的最近数字,请减去0.75,四舍五入,再加上0.75。
public static double roundHalf(double number) {
    double diff = number - (int)number;
    if (diff < 0.25) return (int)number;
    else if (diff < 0.75) return (int)number + 0.5;
    else return (int)number + 1;
}