为了账号安全,请及时绑定邮箱和手机立即绑定

java四舍五入问题

java四舍五入问题

汪汪一只猫 2018-09-04 18:30:33
请教java如何0.5精度的四舍五入呢?例如: 1.22 -> 1       1.55   ->     1.5       1.76    ->     2       1.71     ->    1.5       0.25      ->    0.5       0.24       ->    0  
查看完整描述

2 回答

?
阿晨1998

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。
以此类推。
很多事情变通一下就很简单了~

查看完整回答
反对 回复 2018-09-16
?
拉莫斯之舞

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;

}


查看完整回答
反对 回复 2018-09-16
  • 2 回答
  • 0 关注
  • 756 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信