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)
通用的解决方案是
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)