-1

これは奇妙な質問かもしれませんが、浮動小数点数の配列をたとえば 0.2f (小数点以下 2 桁) に切り詰めるにはどうすればよいですか。

値が 2.123456 の 10 個の要素を含む float 配列 X があるとします。2.123にしたいです。

誰でも助けることができますか?

敬具

4

1 に答える 1

2

次のコードを見てください。

public class Truncate {
  public static void main(String[] args) {
    System.out.println(truncate(2.123556f));
  }

  public static float truncate(float f) {
    // after casting it to int, it will remove all decimal values.
    // float bigInt = (int) (Math.round(f * 1000)); // prints 2.124 for f=2.123556f
    float bigInt = (int) (f * 1000); // prints 2.123 for f=2.123556f
    float result = bigInt / 1000;

    return result;
  }
}

独自の truncate メソッドを作成するか、必要に応じてラウンドを使用できます。そうすれば、強制的に小数点以下 3 桁になります。動的に必要な場合は、「1000」で遊ぶ必要があります

配列か浮動小数点数かは関係ありません。配列をループして truncate メソッドを呼び出すだけです。

アップデート:

おそらく最もエレガントではないかもしれませんが、このような大きな小数を使用できます...

import java.math.BigDecimal;

public class Truncate {
  public static void main(String[] args) {
    System.out.println(truncate(new BigDecimal(0.13642351627349847f)));
  }
  public static BigDecimal truncate(BigDecimal number) {
    BigDecimal thousand = new BigDecimal(1000);
    BigDecimal mult = new BigDecimal(number.multiply(thousand).intValue()); 
    BigDecimal result = mult.divide(thousand);
    return result;
  }
}
于 2013-09-26T22:43:52.263 に答える