0

我的 java 程序中有一些浮点变量:

float var1=1.23456f;
float var2=2.34567f;

在我的计算中,浮点变量中小数点后的位数会增加和减少以保持精度。例如,经过一些计算 System.out.println(var1); 可以打印:

6.35

或者

9.4500082E

或者

88.25214

我想将这些值四舍五入到小数点后 3 位,并去掉后面的小数位,以便浮点数四舍五入,如下所示:

6.350   9.450   88.252

据我所知, NumberFormat 和 String.format() 将输出作为格式化的字符串返回。如何将输出作为四舍五入的浮点数在我的计算中进一步使用?我可以将规则应用于我的浮点(浮点)变量(实例)以始终舍入/删除小数点后 3 位的尾随数字吗?

4

3 回答 3

4

不,你不能得到一个“四舍五入的浮点数”。Afloat不存储十进制数。BigDecimal如果您想使用特定数量的小数位数进行计算,请使用。

其他答案都不会让你得到你真正想要的。

于 2013-09-21T19:49:57.973 回答
-1

一种(不是很有效)的方法是仍然使用NumberFormat该类返回String(3位数字),然后使用Float.parseFloat()将其转回浮点数。

于 2013-09-21T19:02:12.490 回答
-1

使用简单的辅助方法对任意位置进行舍入:

 public static void main(String[] args) throws IOException {
    float fl = 1.2345f;
    System.out.println(round(fl, 3));
}

public static float round(float source, int positions) {
    long multiplier = (long) Math.pow(10, positions);
    return return ((float)((int) (source * multiplier)) / multiplier);
}

请注意,这个片段仅展示了这个想法,并且由于长溢出而被限制在 ~ 18 个位置。

于 2013-09-21T19:02:50.517 回答