这是一个很长但完整的证明解决方案,永远不会失败
只需将您的数字作为双精度数传递给此函数,它将返回您将十进制值向上舍入到最接近的值 5;
如果为 4.25,则输出 4.25
如果是 4.20,输出 4.20
如果是 4.24,输出 4.20
如果为 4.26,则输出 4.30
如果要四舍五入到小数点后 2 位,请使用
DecimalFormat df = new DecimalFormat("#.##");
roundToMultipleOfFive(Double.valueOf(df.format(number)));
如果最多 3 个位置,则 new DecimalFormat("#.###")
如果最多 n 个位置,则 new DecimalFormat("#. nTimes # ")
public double roundToMultipleOfFive(double x)
{
x=input.nextDouble();
String str=String.valueOf(x);
int pos=0;
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)=='.')
{
pos=i;
break;
}
}
int after=Integer.parseInt(str.substring(pos+1,str.length()));
int Q=after/5;
int R =after%5;
if((Q%2)==0)
{
after=after-R;
}
else
{
if(5-R==5)
{
after=after;
}
else after=after+(5-R);
}
return Double.parseDouble(str.substring(0,pos+1).concat(String.valueOf(after))));
}