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