在Java中这是怎么可能的呢?
我有一个花车,我想把它绕到最近的.5。
例如:
1.1应转至1.0
1.3应转至1.5
2.5应转至2.5
3.223920应该转到3.0
编辑:而且,我不只是想要字符串表示,我希望在此之后使用一个实际的浮点。
发布于 2014-05-03 20:58:54
@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发布于 2014-05-03 21:12:25
一般的解决办法是
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);发布于 2014-05-03 21:21:27
虽然没有那么优雅,但您可以创建自己的Round,类似于以下内容(它适用于正数,需要添加一些支持负数的内容):
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;
}https://stackoverflow.com/questions/23449662
复制相似问题