Java 四舍五入
这在Java中是如何实现的 我有一个浮点数,我想把它四舍五入到最近的一个浮点数 例如: 1.1应四舍五入为1.0 1.3应四舍五入为1.5 2.5应四舍五入为2.5 3.223920应四舍五入至3.0Java 四舍五入,java,decimal,rounding,Java,Decimal,Rounding,这在Java中是如何实现的 我有一个浮点数,我想把它四舍五入到最近的一个浮点数 例如: 1.1应四舍五入为1.0 1.3应四舍五入为1.5 2.5应四舍五入为2.5 3.223920应四舍五入至3.0 编辑:此外,我不仅想要字符串表示,我还想要一个实际的浮点值,以便在这之后使用。@SamiKorhonen在评论中说: 乘二,四舍五入,最后除以二 这就是代码: public static double roundToHalf(double d) { return Math.round(d
编辑:此外,我不仅想要字符串表示,我还想要一个实际的浮点值,以便在这之后使用。@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
一般的解决办法是
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);
虽然它不是那么优雅,但您可以创建自己的Round函数,类似于以下内容(它适用于正数,需要添加一些内容以支持负数):
公共静态双半圆形(双倍数字){
双差=数字-(整数)数字;
if(diff<0.25)返回(int)数;
否则,如果(差异<0.75)返回(整数)数字+0.5;
else返回(int)编号+1;
}
乘以2,四舍五入,最后除以2我在谷歌上尝试了无数不同的输入,但没有任何东西给我那个帖子。@user1513171我只是用谷歌搜索:那样的话,SOFI给了我这么多帖子用谷歌搜索:但不管怎样。谢谢你的回答。谷歌忽略了标点符号,所以你基本上是在搜索“在java中四舍五入到最接近的5”:我喜欢这段代码。。。我会把我的存货放进去。。谢谢你一定要记住数学。四舍五入(-83.25*10)/10f和数学。四舍五入(83.25*10)/10f会给你-83.2和83.3的结果。如果我想四舍五入到最接近的0.75呢?我会通过4/3而不是2分吗?Thanks@theprogrammer这将是0.75的最接近倍数,例如1.5、2.25、3.00。如果您想要以0.75结尾的最近数字,请减去0.75,四舍五入,再加上0.75。
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;
}