有关舍入数字的帮助

时间:2010-01-09 11:01:45

标签: java

float per =(num /(float)totbrwdbksint)* 100;

我得到的值为29.475342。我想让它最多四位小数。比如29.48。如何实现这个目标?

5 个答案:

答案 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进行格式化打印