我想要数字后3位数的浮点值,我不想舍入该值 例如: float f = 2.13275; 我希望f为2.132而不是2.133我怎么能在java中做到这一点?
答案 0 :(得分:1)
使用DecimalFormat类。
答案 1 :(得分:1)
Math.floor()会在小数点后切断任何内容而不进行舍入。你可以玩一个技巧,你乘以适当的数量级,取决于结果,然后除以相同的数量级。像这样:
double f = 2.13275;
double f2 = Math.floor(f * 1000) / 1000;
注意:Math类处理双精度数,而不是浮点数。如果确实想要浮动,你可以做一些投射,但会有一些精度损失。另一方面,你只想要3位小数,所以你可能不介意。
编辑:@Jason S指出负数可能会改变他们的最后一个小数位。我不确定你是否想要这个,或者它在代码的上下文中是否相关。但如果是的话,有很多方法可以解决它。一种是使用Math.ceil()作为负数案例:
double f2 = (f < 0 ? Math.ceil(f * 1000) : Math.floor(f * 1000)) / 1000;
是的,我知道,它变得有点凌乱。但它说明了这一点。
答案 2 :(得分:1)
不会(int)(f * 1000)/1000.0有效吗?对我来说,这比其他建议更清晰。
答案 3 :(得分:0)
将DecimalFormat与setRoundingMode(RoundingMode.FLOOR)一起使用
答案 4 :(得分:0)
如前所述,您可以使用DecimalFOrmat
DecimalFormat df= new DecimalFormat("##.###");
//##.###指定您想要的格式
String temp=df.format(var_name);