2 回答
TA贡献2037条经验 获得超6个赞
你肯定知道Math.round可以用来做正常的四舍五入。
所以你所谓的按0.5舍入其实可以换一种想法:就是把你的数字先乘2,再正常四舍五入,再除2。
按照你的例子:
1.55*2=3.1,四舍五入=3,3/2=1.5。
1.76*2=3.52,四舍五入=4,4/2=2。
以此类推。
很多事情变通一下就很简单了~
TA贡献1820条经验 获得超10个赞
//#1
public double round(double in) {
double dec = in - (int)in;
double out = dec >= 0.5 ?
(int)i + ((int)((dec - 0.5) / 0.25)) * 0.5 + 0.5 :
(int)i + ((int)(dec / 0.25)) * 0.5;
return out;
}
//Math.round()。(仅适用于对十分位做四舍五入)
public double round(double in) {
double in2 = Math.round(2 * in);
return d / 2;
}
//#3.BigDecimal的实例方法setScale(int newScale, int roundingMode)
public double round(double in) {
BigDecimal in2 = BigDecimal.valueOf(2 * in);
//0:保留0位小数
//BigDecimal.ROUND_HALF_UP:五入
return dec.setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue() / 2;
}
添加回答
举报