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;
}
添加回答
舉報