我的java程序中有一些浮点变量:
float var1=1.23456f;
float var2=2.34567f;
在我的计算中,我的float变量中小数点后的位数增加和减少以保持精度。例如经过一番计算 的System.out.println(VAR1); 可以打印:
6.35
或
9.4500082E
或
88.25214
我想将这些值四舍五入到小数点后3位并删除后续的十进制数字,以便浮点数四舍五入:
6.350 9.450 88.252
据我所知,NumberFormat和String.format()将输出作为格式化的String返回。如何将输出作为四舍五入的浮点数在我的计算中进一步使用它? 我可以将规则应用于我的浮点(浮点)变量(实例),以便在3位小数后总是舍入/删除尾随数字吗?
答案 0 :(得分:4)
不,你不能得到一个“圆润的浮动”。 float
不存储十进制数。如果要使用特定的十进制数字进行计算,请使用BigDecimal
。
其他答案都不能满足您的实际需求。
答案 1 :(得分:-1)
一种(效率不是很高)的方法是仍然使用NumberFormat
类返回String
(包含3位数),然后使用Float.parseFloat()
将其重新设置为一个漂浮物。
答案 2 :(得分:-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个位置。