gpt4 book ai didi

java - 将 float 四舍五入到小数点后两位的最佳做法是什么?

转载 作者:IT老高 更新时间:2023-10-28 11:26:28 29 4
gpt4 key购买 nike

我正在使用 eclipse + Android SDK。

我需要将浮点值四舍五入到小数点后两位。我通常使用数学库使用下一个“技巧”。

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, int decimalPlace) {
BigDecimal bd = new BigDecimal(Float.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd;
}

然后这样调用函数:

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

这将打印:

2.30

关于java - 将 float 四舍五入到小数点后两位的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911356/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com