Java舍入到最近的.5

use*_*171 15 java decimal rounding

这在Java中怎么可能?

我有一个浮动,我想将它四舍五入到最接近的.5.

例如:

1.1应该舍入到1.0

1.3应该舍入到1.5

2.5应该舍入到2.5

3.223920应该舍入到3.0

编辑:另外,我不只是想要字符串表示,我希望在那之后使用实际的浮点数.

Mic*_*ski 31

@SamiKorhonen在评论中说:

乘以2,舍入,最后除以2

所以这就是代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

输出:

1.0
1.5
2.5
3.0
3.0
Run Code Online (Sandbox Code Playgroud)


Pet*_*rey 7

通用的解决方案是

public static double roundToFraction(double x, long fraction) {
    return (double) Math.round(x * fraction) / fraction;
}
Run Code Online (Sandbox Code Playgroud)

就您而言,您可以

double d = roundToFraction(x, 2);
Run Code Online (Sandbox Code Playgroud)

四舍五入到小数点后两位

double d = roundToFraction(x, 100);
Run Code Online (Sandbox Code Playgroud)