float per =(num /(float)totbrwdbksint)* 100;
我得到的值为29.475342。我想让它最多四位小数。比如29.48。如何实现这个目标?
答案 0 :(得分:5)
您应该将此作为格式化的一部分 - 浮点数本身不具有“两位小数”的任何概念。
例如,您可以使用格式为“#0.00”的DecimalFormat
:
import java.text.*;
public class Test
{
public static void main(String[] args)
{
float y = 12.34567f;
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(y));
}
}
答案 1 :(得分:1)
作为Jon implies,显示格式。最简洁的方法是使用String
类。
float f = 70.9999999f;
String toTwoDecPlaces = String.format("%.2f", f);
这将产生字符串"71.00"
答案 2 :(得分:1)
如果你需要控制舍入的方式,你应该检查BigDecimal ist有几种舍入模式。 http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html
答案 3 :(得分:1)
这里你需要小心,这个答案与java无关,它涉及许多编程语言中小数的所有方面,因此它是通用的。危险在于数字四舍五入,就是这样,而且根据我的经验发生了这种情况,并且知道处理它可能很棘手:
如果你处于这种发展领域,那么我的建议是不要通过向上/向下舍入进行调整......它可能不会出现在物品的小额销售上,但它可能会出现在其他地方......会计师会发现它...最好的办法就是简单地截断它, 例如29.475342 - > 29.47并留下它,为什么?,。005可以累计大的利润/亏损。
结合这里讨论的内容......电子收银机和寄存器使用各自处理这种情况,而不是处理XX.XXXXXXXXXX(如计算机,其中有小数点后27/28),它处理XX .XX。
要记住的事情......
希望这有帮助, 最好的祝福, 汤姆。
答案 4 :(得分:0)
如果您需要,可以使用格式化的打印方法System.out.printf进行格式化打印