如何将浮点数舍入到android中的一位数?

时间:2012-03-14 20:28:39

标签: java android

我想编写一个方法将用户的BMI(浮点数)四舍五入到一位数,逻辑是否正确以及如何在android Java中编写它?

private static final DecimalFormat oneDigit = new DecimalFormat("#,##0.0");
      public static float roundToOneDigit(float paramFloat)
  {  
         float   f = Float.valueOf(oneDigit.format(paramFloat)).floatValue();

          f=f;
         return f;

  }

2 个答案:

答案 0 :(得分:4)

试试这个:

public static String roundToOneDigit(float paramFloat) {
    return String.format("%.1f%n", paramFloat);
}

答案 1 :(得分:2)

假设这是为了向用户显示值:

private static final DecimalFormat oneDecimal = new DecimalFormat("#,##0.0");

public static String formatBmi(double bmi) {
  return oneDecimal.format(bmi);
}

一些变化:

  • 使用双倍,除非您将其描述为瓶颈,更不用说向下漂移了
  • 您最有可能寻找“十进制”一词,而不是“数字”
  • 更具描述性的方法名称

如果从多个线程同时调用此方法,静态DecimalFormat将会中断,因为它不是线程安全的。在这种情况下,您可能想测试在每个方法调用上创建一个新方法是否足够快。

查看Caner's answers,更短,本质上是线程安全的。