2012-03-14 14 views
0

私はユーザーのBMI(浮動小数点数)を1桁に丸める方法を書いていますが、論理が正しいですし、アンドロイドのJavaで書く方法は?アンドロイドで浮動小数点数を1桁に丸める方法は?

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; 

    } 
+1

この値をユーザーに表示しますか? 'oneDigit.format(paramFloat)'の後で停止し、その呼び出しから返された 'String'を使用します。 –

答えて

4

これを試してみてください:

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

私はString.formatの考え方が好きですが、これは '23.456f'を' 2e + 01'に変換します:( –

+0

あなたは '%.1f%n'を意味すると思います.FTFY:' 23.456f ':) –

2

これは、ユーザーに値を表示するためのものであると仮定すると:

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

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

いくつかの変更:あなたがプロファイリングない限り

  • は、二重を使用してボトルネックとして、浮動小数点へのダウンキャストがはるかに少ない
  • これは、複数のスレッドから同時に呼び出される場合はあなたが最も可能性が高いではない「数字」
  • よりわかりやすいメソッド名

、用語「小数」を探していることがあるので、静的DecimalFormatが解除されますスレッドセーフではありません。その場合は、すべてのメソッド呼び出しで新しいものを作成するのが十分速いかどうかをテストしたいかもしれません。

非常に短く本質的にスレッドセーフであるCaner's answersをチェックしてください。

+0

ありがとうございます – user

関連する問題