如果可能的话,我需要舍入到最接近的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));
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为6.10000 ...轮到6.1等...需要它舍入到6.0
感谢您的任何反馈.
Rob*_*tts 12
而不是尝试舍入到最接近的0.5,加倍,舍入到最近的int,然后除以2.
这样,2.49变为4.98,变为5,变为2.5.
2.24变为4.48,轮到4变为2.
@ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6528 次 |
| 最近记录: |