如何在小数点后将小数舍入到2位(Java)

时间:2013-05-22 20:22:12

标签: java decimal number-formatting

我对java很新,我必须创建这个程序,我不知道从哪里开始。有人可以帮助我做什么以及如何编写代码以开始使用?

编写一个模拟收银机的程序。提示用户输入三个项目的价格。将它们添加到一起以获得小计。确定小计的税(6%)。查找销售小计加税的总金额。显示每个项目的价格,小计金额,税额和最终金额。

到目前为止,我有这个:

package register;
import java.util.Scanner;

public class Register {

    public static void main(String[] args) {

        Scanner price = new Scanner(System.in);

        System.out.print("Please enter a price for item uno $");
        double priceuno = price.nextDouble();

        System.out.print("Please enter a price for item dos $" );
        double pricedos = price.nextDouble();

        System.out.print("Please enter a price for item tres $");
        double pricetres = price.nextDouble();

        double total = ((priceuno) + (pricedos) + (pricetres));
        System.out.println("The subtotal is $" + total);

        double tax = .06;

        double totalwotax = (total * tax );
        System.out.println("The tax for the subtotal is $" + totalwotax);
        double totalandtax = (total + totalwotax);
        System.out.println("The total for your bill with tax is $" + totalandtax);

    }
}

输出(如果价格让我们说price1 = 1.65,price2 = 2.82和price3 = $ 9.08)看起来像这样:

  

请为第一项$ 1.65

预定价格      

请输入第二项$ 2.82

的价格      

请输入第3项$ 9.08的价格

     

小计是$ 13.55

     

小计的税金为$ 0.8130000000000001

     

您的税收账单总额为14.363000000000001

如何将小计和总帐单的税额四舍五入到小数点后的小数点后两位呢?

由于

4 个答案:

答案 0 :(得分:6)

Java有这样的事情的DecimalFormat类。

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

所以你想要添加到你的代码

 DecimalFormat df = new DecimalFormat("###,##0.00");

并将输出更改为

 double totalwotax = (total * tax );
 System.out.println("The tax for the subtotal is $" + df.format(totalwotax));
 double totalandtax = (total + totalwotax);
 System.out.println("The total for your bill with tax is $" + df.format(totalandtax));

这将确保您的分数的小数点右侧正好有两位数字,并且如果总数低于1美元,则至少保留一位数字。如果它是1000或以上,它将使用逗号在正确的位置格式化。如果您的总数高于100万,您可能需要将其更改为类似的内容以获得额外的命令

DecimalFormat df = new DecimalFormat("###,###,##0.00");

修改 因此Java还内置了对格式化货币的支持。忘记DecimalFormatter并使用以下内容:

NumberFormat nf = NumberFormat.getCurrencyInstance();

然后像使用DecimalFormatter一样使用它,但没有前面的美元符号(它将由格式化程序添加)

System.out.println("The total for your bill with tax is " + nf.format(totalandtax));

此外,这种方法对语言环境很敏感,所以如果你在美国它会使用美元,如果在日本它使用日元,依此类推。

答案 1 :(得分:5)

永远不要使用double 来赚钱,用户BigDecimal

答案 2 :(得分:2)

你可以试试这个

<强> DecimalFormat df=new DecimalFormat("#.##");

税务

double totalwotax = 0.8130000000000001;
System.out.println("The tax for the subtotal is $" + df.format(totalwotax));

输出:0.81

总计

double totalandtax = 14.363000000000001;
System.out.println("The total for your bill with tax is $" + df.format(totalandtax));

输出:14.36

答案 3 :(得分:1)

您可以使用format()方法代替println()

System.out.format("The subtotal is $%.2f%n",  total);  

可以找到格式语法的说明here