截断float数组的元素

时间:2013-09-26 22:28:23

标签: java floating-accuracy

这可能是一个奇怪的问题,但我如何截断浮点数组到例如:0.2f(2位小数)。

想象一下,我有一个包含10个元素的浮点数组X,其值为2.123456。我想让它们成为2.123。

有人可以帮忙吗?

亲切的问候

1 个答案:

答案 0 :(得分: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方法,也可以根据需要使用round。这样你就会强制它为3位小数。如果您需要动态,那么您需要使用“1000”

无论是数组还是浮点数,只需循环数组来调用截断方法。

更新:

也许不是最优雅但你可以使用像这样的大小数......

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;
  }
}