如果可能,我需要舍入到最接近的0.5。
10.4999 = 10.5
这是快速代码:
import java.text.DecimalFormat;
import java.math.RoundingMode;
public class DecimalFormat
{
public static void main(String[] args)
{
DecimalFormat dFormat = new DecimalFormat("#.0");
dFormat.setRoundingMode(RoundingMode.HALF_EVEN);
final double test = 10.4999;
System.out.println("Format: " + dFormat.format(test));
}
}
这不起作用,因为6.10000 ...轮到6.1等......需要它舍入到6.0
感谢您的反馈。
答案 0 :(得分:11)
而不是尝试舍入到最接近的0.5,加倍,舍入到最近的int,然后除以2。
这样,2.49变为4.98,变为5,变为2.5 2.24变为4.48,轮数变为4,变为2。
答案 1 :(得分:7)
@ RobWatt答案的更通用的解决方案,以防你想要转向别的东西:
private static double roundTo(double v, double r) {
return Math.round(v / r) * r;
}
System.out.println(roundTo(6.1, 0.5)); // 6.0
System.out.println(roundTo(10.4999, 0.5)); // 10.5
System.out.println(roundTo(1.33, 0.25)); // 1.25
System.out.println(roundTo(1.44, 0.125)); // 1.5
答案 2 :(得分:0)
public class DecimalFormat
{
public static void main(String[] args)
{
double test = 10.4999;
double round;
int i = (int) test;
double fraction = test - i;
if (fraction < 0.25) {
round = (double) i;
} else if (fraction < 0.75) {
round = (double) (i + 0.5);
} else {
round = (double) (i + 1);
}
System.out.println("Format: " + round);
}
}