这可能是一个奇怪的问题,但我如何将浮点数组截断为例如:0.2f(2 个小数位)。
想象一下,我有一个浮点数组 X,它包含 10 个元素,值为 2.123456。我想让它们成为 2.123。
有人可以帮忙吗?
亲切的问候
这可能是一个奇怪的问题,但我如何将浮点数组截断为例如:0.2f(2 个小数位)。
想象一下,我有一个浮点数组 X,它包含 10 个元素,值为 2.123456。我想让它们成为 2.123。
有人可以帮忙吗?
亲切的问候
看下面的代码:
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;
}
}