当前位置: 首页 > 面试题库 >

将浮点数舍入到两位小数的最佳实践是什么?

翟曦
2023-03-14
问题内容

我正在使用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, 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


 类似资料:
  • 我想把54.5345四舍五入到54.54,也就是说,如果我有第三个小数位,那么我想在第二个小数位上加1。 我试过用math.round但如果第三小数小于5,它总是四舍五入

  • 问题内容: 假设我有,我想将其转换为。如何在Python中完成此操作? 给与不。我是Python或一般编程的新手。 我不想将其打印为字符串,结果将被进一步使用。有关此问题的更多信息,请查看 Tim Wilson的Python编程技巧:贷款和付款计算器 。 问题答案: (或的结果)正确舍入为小数点后两位。数学上,这听起来像您想要的是天花板功能。Python模块中的一个名为: 地板和天花板功能通常分别

  • 我如何四舍五入到两个小数位?

  • 问题内容: 有没有办法将python浮点数舍入为x小数?例如: 我已经找到了修剪/截断它们的方法(66.666666666-> 66.6666),但是不是圆形的(66.666666666-> 66.6667)。 问题答案: 使用内置功能: 帮助: round(number [,ndigits])->浮点数 将数字四舍五入到给定的精度(以十进制数字表示)(默认为0位数)。这总是返回一个浮点数。精度可

  • 问题内容: 如果值为,则应将其格式化为。如果是,那么应该是。 问题答案: 这是一个实用程序,可以将双精度舍入(而不是截断)双精度至小数位数。 例如: 原始版本;提防这个 这在小数位数很高(例如)或整数部分很大(例如)的极端情况下会严重崩溃。感谢Sloin指出这一点。 多年来,我一直在使用上面的方法将“不太大”的双精度取整到2或3个小数位(例如,以秒为单位的清理时间用于记录目的:27.9876543

  • 我需要将PHP中的一个小数点舍入为两位小数,以便: 变成。。。 我尝试了数字_格式,但这只是将值舍入到49.96。我不能使用substr,因为数字可能更小(如7.950)。到目前为止,我还没有找到这个问题的答案。 非常感谢您的帮助。