-1

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

想象一下,我有一个浮点数组 X,它包含 10 个元素,值为 2.123456。我想让它们成为 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;
  }
}

如果需要,您可以创建自己的截断方法或使用回合。这样,您将强制它为小数点后 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 回答