加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将浮点数舍入为2位小数的最佳做法是什么?

发布时间:2020-12-15 07:36:15 所属栏目:Java 来源:网络整理
导读:参见英文答案 How to round a number to n decimal places in Java????????????????????????????????????29个 我正在使用eclipse Android SDK. 我需要将浮点值舍入为2位小数.我通常使用数学库使用下一个“技巧”. float accelerometerX = accelerometerX * 1
参见英文答案 > How to round a number to n decimal places in Java????????????????????????????????????29个
我正在使用eclipse Android SDK.

我需要将浮点值舍入为2位小数.我通常使用数学库使用下一个“技巧”.

float accelerometerX = accelerometerX * 100;
    accelerometerX = round(accelerometerX);
    Log.d("Test","" + accelerometerX/100);

但我觉得这不是最好的方法.

是否有图书馆可以进行这些类型的操作?

提前致谢.

解决方法

我在2年前使用Java中的统计数据,我仍然得到一个函数的代码,允许您将数字四舍五入到您想要的小数位数.现在你需要两个,但也许你想用3来比较结果,这个功能给你这个自由.

/**
* Round to certain number of decimals
* 
* @param d
* @param decimalPlace
* @return
*/
public static float round(float d,int decimalPlace) {
    BigDecimal bd = new BigDecimal(Float.toString(d));
    bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
    return bd.floatValue();
}

您需要决定是否要向上或向下舍入.在我的示例代码中,我正在四处寻找.

希望能帮助到你.

编辑

如果你想在它们为零时保留小数位数(我猜它只是为了向用户显示),你只需要将函数类型从float更改为BigDecimal,如下所示:

public static BigDecimal round(float d,BigDecimal.ROUND_HALF_UP);       
    return bd;
}

然后以这种方式调用函数:

float x = 2.3f;
BigDecimal result;
result=round(x,2);
System.out.println(result);

这将打印:

2.30

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读